2015-08-01 4 views
-1

Я пытаюсь выяснить, почему кадр моего контроллера представления (загружаемый из XIb) установлен правильно, когда представлен через presentViewController:Autolayout - вид контроллер кадра неправильно

self.presentViewController(testVC, animated: true, completion: nil); 

... но остается (0, 0, 600, 600) при добавлении в качестве контроллера зрения ребенка:

self.addChildViewController(testVC) 
self.view.addSubview(testVC.view) 
testVC.didMoveToParentViewController(self) 
testVC.view.setNeedsLayout(); (makes no difference) 

у меня есть изолированный пример, который можно предусмотреть, что демонстрирует проблему более четко. Идеи?

+0

Просьба представить весь код, чтобы его можно было воспроизвести? – BaseZen

+0

Четкий вопрос с четким ответом, но несколько downvotes. Я никогда не пойму. – jimt

ответ

2

Это потому, что вы забыли дать ему рамку! Вы говорите:

self.view.addSubview(testVC.view) 

Но вы ни применять frame ни присоединять каких-либо ограничений, поэтому вид не изменяется. Вы - - теперь родитель. Изменение размера детского вида до вы. Если вы этого не сделаете, его размер - это размер, который он имел в раскадровке - 600 на 600, как вы сказали. Магия не изменяется. Вы имейте это в виду.

2

Попробуйте это.

self.addChildViewController(testVC) 
testVC.view.frame=self.view.bounds//or set by CGRectMake() 
testVC.willMoveToParentViewController(self) 
self.view.addSubview(testVC.view) 
testVC.didMoveToParentViewController(self)