UIView добавляет подписку после изменения ориентации: Сообщите представлению об изменении размера

У меня есть UIView как XIB в портретном режиме.

Это представление добавляется программно к контроллеру представления следующим образом:

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"InputView" owner:self options:nil];
    InputView *inputView = (InputView*)[nibObjects objectAtIndex:0];
    [self.view addSubview:inputView];

Это представление имеет правильно настроенные маски автоматического изменения размеров и отлично вращается при изменении ориентации с книжной на альбомную.

Однако, если ориентация уже альбомная. и я создаю вид после изменения ориентации, он имеет исходную портретную ориентацию. Используя предложения occulus и Индера Кумара Ратора (спасибо, ребята!), Я изменил код на этот:

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];

Спасибо!

7
задан Community 23 May 2017 в 12:31
поделиться