Неправильное выравнивание надписей в альбомном режиме - PullRequest
0 голосов
/ 20 августа 2011

Правильный ли приведенный ниже код?Когда пользователь поворачивает устройство, две метки должны идти к координатам, указанным ниже.Работает, когда пользователь запускает приложение в портретном режиме, метки размещаются правильно.Однако, когда пользователь запускает в альбомной ориентации, метки НЕ размещаются правильно.Но если повернуть вид в портрет, а затем обратно в пейзаж, они выровняются правильно.Я попытался поместить координаты ландшафта в viewDidLoad, и он все еще не работает.Что я должен делать?Спасибо за вашу помощь!

Две метки: recordingTimeLabel и recordingTimeLabelMinutes.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

 if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
     //is landscape

     backGround.frame = CGRectMake(0, 0, 768, 1024);

     recordingTimeLabel.center = CGPointMake(967, 22);
     recordingTimeLabelMinutes.center = CGPointMake(901, 22);

     NSLog(@"is landscape");

     //  fixedSpace.width = 400;

 } else {
     //is portrait

     backGround.frame = CGRectMake(0, 0, 1024, 768);

     recordingTimeLabel.center = CGPointMake(710, 22);
     recordingTimeLabelMinutes.center = CGPointMake(661, 22);

     NSLog(@"is portrait");

 }



}

Кроме того, этот код не работает:

Ответы [ 3 ]

1 голос
/ 20 августа 2011

willRotateToInterfaceOrientation: может не вызываться, если вы запускаете в ландшафтном режиме.Я предлагаю установить координаты в viewWillAppear:, а не viewDidLoad, чтобы выяснить начальную ориентацию (вы можете использовать self.interfaceOrientation, если у вас включено авторотация).

0 голосов
/ 20 августа 2011

Понял.Я использовал NSTimer и очень часто вызывал функцию, которая содержала этот код:

-(void)updateLabelLocation {

    if (([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeRight) || ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft)) {

    recordingTimeLabel.center = CGPointMake(710, 22);
    recordingTimeLabelMinutes.center = CGPointMake(661, 22);

    } 

}
0 голосов
/ 20 августа 2011

Вы установили следующий код также для UIInterfaceOrientation?

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    {
        return YES;
    }
...