У меня есть UIView как XIB в портретном режиме.
Это представление программно добавляется к контроллеру представления следующим образом:
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"InputView" owner:self options:nil];
InputView *inputView = (InputView*)[nibObjects objectAtIndex:0];
[self.view addSubview:inputView];
В этом представлении правильно настроены маски с автоматическим изменением размеров, и он отлично вращается при изменении ориентации с книжной на альбомную.
Однако, если ориентация уже альбомная и я создаю вид после изменения ориентации, у него будет исходная книжная ориентация.
Есть ли способ указать представлению, чтобы оно инициализировалось или изменило свой размер до портретного, используя его маски?
Заранее благодарим за любой ответ!
РЕДАКТИРОВАТЬ: Используя предложения occulus и Inder Kumar Rathore (спасибо, ребята!), Я изменил код на это:
InputView *inputView = (InputView*)[nibObjects objectAtIndex:0];
[self.view addSubview:inputView];
[self.view setNeedsLayout];
[self.view layoutSubviews];
[self.view layoutIfNeeded];
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
[self shouldAutorotateToInterfaceOrientation:orientation];
К сожалению, никаких изменений нет. Думаю, я нашел человека, задающего тот же вопрос:
Ответ правильно определяет проблему, но не очень обнадеживает ... Конечно, я мог бы создать два пера или изменить размер кадра, но это кажется настолько противоречащим идее автоматического изменения размера. Мне трудно поверить в то, что после пробуждения и добавления его в представление невозможно определить, как использовать его функции автоматического изменения размера ... что-то, что работает безупречно, когда устройство вращается.
РЕДАКТИРОВАТЬ 2:
Решение idz работает:
InputView *inputView = (InputView*)[nibObjects objectAtIndex:0];
[self.view addSubview:inputView];
inputView.frame = self.view.bounds;
[inputView show];
Спасибо!