Я должен задать этот вопрос, потому что Im совершенно озадачен механикой этого. Я пытаюсь проверить ориентацию на портрете, и пока он отлично работает в viewdidload для моего случая, потому что мне нужно только сделать звонок один раз, я все еще задавался вопросом, что делать, если мне нужно было проверять портрет каждый раз, когда устройство было обращено назад к портрету.viewDidLayoutSubviews: и UIInterfaceOrientationIsPortrait
У меня есть следующий код
-(void)viewDidLayoutSubviews{
if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){
self.adviceLabel.preferredMaxLayoutWidth = [[UIScreen mainScreen]bounds].size.width-25;
[self.adviceLabel setFrame:CGRectMake(0, 0,[[UIScreen mainScreen]bounds].size.width-25 , 103)];
NSLog(@"portrait");
}
Прежде всего «портрет» получает любимые 3 раз, что я полагаю, потому что у меня есть 3 вида внутри моих ОК, дух. Но затем, когда я начинаю поворачивать экран вокруг, он фактически начинает записывать «портрет» последовательно, когда я «перехожу к пейзажу», что означает, что он записывается после того, как я нахожусь в ландшафтном режиме. Есть ли смысл в этом? Я ненавижу оставлять предмет, не понимая. Заранее спасибо!
Также вы можете добавить флаг ориентации, чтобы проверить его в любом месте. –
Что означает u по знаку ориентации? Что касается вашего ответа, я не могу использовать эти методы, потому что я действительно хочу использовать UIInterfaceOrientationIsPortrait, но я не понимаю, почему он в viewdidlayoutssubjects возвращает true при повороте в ландшафт. (в других методах, таких как viewdidload, он работает по назначению ..) – DevilInDisguise
Например, вы можете добавить свойство boolean. @property (неатомный, назначить) BOOL viewOrientation. И измените его в методах выше. –