2017-02-03 4 views
0

Я новичок в программированииГибких ограничения зрения положения, когда вид загружается

У меня 2 подвидов в моем главном RootView (Magenta) - которые AppView (оранжевые) и MenuBarView (черный) - http://imgur.com/ySgEP9k

Я хочу MenuBar быть в определенном положении, даже когда он повернут так, что я сделал что-то вроде этого:

Swift 3

class ViewController: UIViewController { 

var MenuBarPosition = "Left" 

func RefreshConstraints() { 

    switch MenuBarPosition { 
    case "Right": 
     self.ApplyMenuBarRight() 
     (...) 
    default: 
     print("MenuBarPositionError") 
    } 


func ApplyMenuBarRight() { 
    RootView.removeConstraints(ApplyMenuBarOnRightRemoveConstraints) // This is an array 
    RootView.addConstraints(ApplyMenuBarOnRightConstraints)   // Also an Array 
    } 
    (...) 
} 

При повороте экрана, я поставил

Swift 3

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    RefreshConstraints() 
} 

, чтобы применить изменения. Это прекрасно работает. Поэтому я знаю, что мои ограничения и код для их применения верны. Однако, когда я пытался сделать:

Swift 3

override func viewDidLoad() { 

    RootView.translatesAutoresizingMaskIntoConstraints = false 
    MenuBarView.translatesAutoresizingMaskIntoConstraints = false 
    AppView.translatesAutoresizingMaskIntoConstraints = false 

    super.viewDidLoad() 

    RefreshConstraints() 

} 

ограничения подвид не применяются, когда приложение изначально загружается и показывает экран пурпурного (т.е. rootView) - http://imgur.com/Koqliey

Что я пропустил - для него не работает правильно при запуске приложения? Любая помощь оценивается, спасибо: D

ответ

0

Я сам выяснил ответ, пройдя больше исследований и проб и ошибок!

Вместо того, чтобы идти на

override func viewDidLoad() { 

    super.viewDidLoad() 
    RefreshConstraints() 

    } 

Я переместил код под viewDidLayoutSubviews() и это сработало!

Надеюсь, это поможет!

Смежные вопросы