У моего self.view неправильные размеры

Мой вид имеет неправильные размеры. Я работаю только в ландшафтном режиме, но в представлении отображаются портретные размеры «Ширина просмотра = 768,000000 Высота = 1024,000000». Есть идеи, как это исправить? Я играл с автоповоротом, я пробовал

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft|| interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

а также

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

Это выглядит хорошо на виде, но размеры действительно портят мое приложение.


person Jonathan    schedule 16.11.2012    source источник
comment
как вы получаете размер представления?   -  person yuf    schedule 17.11.2012
comment
размер.рамки.собственного.вида.ширина. Так далее..   -  person Jonathan    schedule 17.11.2012
comment
и когда вы читаете это значение?   -  person yuf    schedule 17.11.2012
comment
@yuf Я запускал его в разных частях. viewDidLoad и нажатие кнопки.   -  person Jonathan    schedule 17.11.2012


Ответы (1)


Вы никогда не должны использовать frame, чтобы указать свое собственное измерение. frame относится к представлению родительского контейнера. Чтобы найти размер относительно собственной системы координат вашего вида, используйте bounds: self.view.bounds

Например, родительский вид может видеть дочерний вид с шириной = 768 и высотой = 1024, но с преобразованием поворота на 90 градусов. Вот как родительское представление видит дочернее представление, и это то, о чем self.view.frame. Дочернее представление, имеющее ширину = 1024 и высоту = 768, отражает то, как представление видит себя в своей собственной системе координат, то есть self.view.bounds

person nonopolarity    schedule 17.11.2012
comment
Я пытался использовать границы, но все равно получаю те же результаты. Я думаю, что вид может не знать, что iPad находится в альбомной ориентации. Я не знаю. - person Jonathan; 17.11.2012
comment
попробуйте распечатать в touchesBegan и посмотрите, увидите ли вы такое же значение? - person nonopolarity; 17.11.2012
comment
Это сработало, это очень странно, вы знаете, почему это происходит? - person Jonathan; 17.11.2012
comment
самое раннее время, когда вы можете видеть это правильно, это viewWillLayoutSubviews, viewDidLayoutSubviews, viewDidAppear. Для справки: stackoverflow.com/questions/12118920/ - person nonopolarity; 17.11.2012