2015-06-02 2 views
1

У меня действительно странная проблема с представлением в моем приложении для iPhone.self.view.frame/bounds UIViewController изменен между viewDidLoad и viewWillAppear iOS8

У меня есть два подкласса UIViewControllerA и B.

UIViewController класса B (Давайте называть его b) вызывается из метода внутри UIViewController из A (a). Но когда отображается b, кадр и границы «корневого» вида b изменены магически между вызовами viewDidLoad и viewWillAppear. Я понятия не имею, почему это происходит. Насколько я знаю, у всех моих других взглядов нет этой проблемы.

Эти рамки и границы:

в viewDidLoad:

self.view.frame: {0, 0}, {375, 667} 

self.view.bounds: {0, 0}, {375, 667} 

в viewWillAppear::

self.view.frame: {0, 64}, {375, 554} 

self.view.bounds: {0, 0}, {375, 554} 

Я сделал скриншот, чтобы продемонстрировать эту проблему. Желтая область - self.viewb. красные и зеленые - это области self.view. Они просто для моего макетирования. Я не думаю, что они оказывают какое-либо влияние на фрейм или рамки self.view.

Есть ли у кого-нибудь идеи, что вызывает эту проблему?

UIViews in b

+2

Нет проблем. Кадр представления еще не завершен в 'viewDidLoad'. Это нормально. Не полагайтесь на это. – rmaddy

+0

Вы должны сделать все, что связано с вашим кодом, в 'viewWillAppear' или позже. 'viewDidLoad' указывает только на то, что просмотренные просмотры загружены, но представления еще не находятся в конечной позиции. –

+0

Хорошо, но почему это не происходит в других контроллерах? Или это просто совпадение, что оно работает в других? –

ответ

0

Хорошо, после нескольких часов (! В буквальном смысле) отладки Я нашел ошибку: я забыл позвонить self = [super init]; в моем методе пользовательских инициализации. Это вызвало какое-то странное поведение.

Спасибо за ваши полезные комментарии!

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