iPhone Multi-View Rotation Hell
Это мой первый пост здесь, и я очень новичок в разработке для iPhone, поэтому, пожалуйста, потерпите меня.
У меня есть приложение, которое имеет несколько контроллеров представления, и у каждого контроллера представления есть несколько файлов пера, которыми он управляет, и у некоторых из перьев есть больше чем одно представление. В приложении есть панель инструментов, управляемая контроллером корневого представления.
После долгих поисков у меня есть ротация, работающая на каждом экране, кроме одного. У меня нет их для загрузки в правильной ориентации, но я думаю, это другой вопрос.
В моих перьях, которые имеют более одного вида, я могу выбрать параметры автоматического изменения размера только на исходном главном экране. На добавленных мною представлениях, которые я загружаю с помощью insertSubview, я могу выбирать параметры фиксированного поля, но не параметры изменения ширины и высоты. Я использую Xcode 4.
Мой первый вопрос, почему я не могу выбрать параметры изменения размера в дополнительных представлениях?
Извините, я должен был удалить изображения, которые я вставил сюда, показывая, что я имею в виду, чтобы иметь возможность публиковать сообщения.
Во всяком случае, это не моя главная проблема, я просто хочу знать, из любопытства, почему я не могу выбрать параметры изменения размера. Я нашел способ обойти это в коде. В функцию, в которую я загружаю подпредставление, я добавляю [viewName setAutoresizingMask:UIViewAutoresizingFurableWidth|UIViewAutoresizingF flexHeight];
Например, чтобы загрузить представление, которое я назвал shiftStart, я использую:
- (IBAction)loadShiftStart:(id)sender {
[self clearView];
[self.view insertSubview:shiftStart atIndex:0];
[shiftStart setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
}
Теперь вот моя проблема. У меня есть файл пера, который имеет 3 вида, вид, который является основным видом, который загружается первым, rotaStart, который загружается как подпредставление при нажатии кнопки в первом представлении, и shiftStart, который загружается как подпредставление, когда кнопка на первом вид нажимается. rotaStart и shiftStart практически идентичны: заголовок, текстовый блок, кнопка "Да" и кнопка "Нет". Единственное отличие - это текст в поле, и какой вид загружается, если вы нажимаете кнопки "Да" или "Нет".
У меня все те же параметры изменения размера и полей, выбранные в XCode, для заголовка, текстового блока и кнопок, и, насколько я могу судить, код, который их загружает, идентичен (см. Код ниже), но shiftStart вращается правильно, а rotaStart делает не.
- (IBAction)loadRotaStart:(id)sender {
[self clearView];
[self.view insertSubview:rotaStart atIndex:0];
[rotaStart setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
}
- (IBAction)loadShiftStart:(id)sender {
[self clearView];
[self.view insertSubview:shiftStart atIndex:0];
[shiftStart setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
}
Может кто-нибудь сказать мне, почему rotaStart не вращается, когда телефон меняется на альбомную, пожалуйста?
Извините, это объяснение немного затянулось. Я не уверен, как еще это объяснить.
Спасибо
1 ответ
Для тех, кто смотрит на это с похожей проблемой, @longball решил ее за меня. Каким-то образом мне удалось добавить второй вид поверх базового вида, в комплекте с метками и кнопками. Удаление дополнительного вида решило проблему.