2014-12-19 3 views
1

Я должен задать этот вопрос, потому что 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 вида внутри моих ОК, дух. Но затем, когда я начинаю поворачивать экран вокруг, он фактически начинает записывать «портрет» последовательно, когда я «перехожу к пейзажу», что означает, что он записывается после того, как я нахожусь в ландшафтном режиме. Есть ли смысл в этом? Я ненавижу оставлять предмет, не понимая. Заранее спасибо!

ответ

0

Используйте следующий код для вашей цели:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
// do something before rotation 
} 

или

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
// do something after rotation 
} 

-viewDidLayoutSubviews метод вызывается каждый раз, когда вид и это подвиды изменить свои кадры. Не рекомендуется проверять ориентацию при каждом изменении вида кадра.

+0

Также вы можете добавить флаг ориентации, чтобы проверить его в любом месте. –

+0

Что означает u по знаку ориентации? Что касается вашего ответа, я не могу использовать эти методы, потому что я действительно хочу использовать UIInterfaceOrientationIsPortrait, но я не понимаю, почему он в viewdidlayoutssubjects возвращает true при повороте в ландшафт. (в других методах, таких как viewdidload, он работает по назначению ..) – DevilInDisguise

+0

Например, вы можете добавить свойство boolean. @property (неатомный, назначить) BOOL viewOrientation. И измените его в методах выше. –

Смежные вопросы