LandscapeOrientation при запуске метода didload в цели c - PullRequest
4 голосов
/ 08 января 2012

Я сделал приложение для iPad,

Оно отлично работает, когда я впервые загружаю свое приложение в портретном режиме, но когда я впервые загружаю свое приложение в альбомном режиме, оно принимает координатытолько в портретном режиме, потому что внутри моего метода didLoad я даю координаты только в портретном режиме.

Теперь нужно указать координаты ландшафтного режима в моем методе didLoad.

Я пробовал это, внутри моего метода didLoad

if (interfaceOrientation == UIInterfacePortraitmode ||
    interfaceOrientation == UIInterfaceUpsideDown)
{
    // do this....
}
else
{
    // do this....
}

, но я не могу написатьусловие для if / else внутри моего didLoad метода.

Что мне делать?

Ответы [ 3 ]

3 голосов
/ 08 января 2012

Вы можете выполнить обработку, как показано ниже -

-(void) viewWillAppear: (BOOL) animated {
       [super viewWillAppear: animated];
       [self updateLayoutForNewOrientation: self.interfaceOrientation];
}

-(void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation duration: (NSTimeInterval) duration {
       [self updateLayoutForNewOrientation: interfaceOrientation];
}

и, наконец, пользовательский метод -

- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation {
    if (UIInterfaceOrientationIsLandscape(orientation)) {
         // Do some stuff
    } else {
         // Do some other stuff
    }

}

2 голосов
/ 16 апреля 2012
-(void) viewWillAppear: (BOOL) animated {
       [super viewWillAppear: animated];
       [self adjustViewtForNewOrientation: self.interfaceOrientation];
}

-(void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation duration: (NSTimeInterval) duration {
       [self adjustViewtForNewOrientation: interfaceOrientation];
}


- (void) adjustViewtForNewOrientation: (UIInterfaceOrientation) orientation {
    if (UIInterfaceOrientationIsLandscape(orientation)) {
         // Do some stuff
    } else {
         // Do some other stuff
    }

также вызовите adjustViewtForNewOrientation в вашем методе ViewDidLaod (),

0 голосов
/ 09 января 2012

У меня была похожая проблема с UIScrollView. Я исправил это, выровняв подпредставления как предложено здесь .

- (void)alignSubViews
{
    // Position all the content views at their respective page positions
    scrollView.contentSize = CGSizeMake(self.contentViews.count * scrollView.bounds.size.width,
                                        scrollView.bounds.size.height);
    NSUInteger i = 0;
    for (UIView *v in self.contentViews) {
        v.frame = CGRectMake(i * scrollView.bounds.size.width, 0,
                             scrollView.bounds.size.width, scrollView.bounds.size.height);
        i++;
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Setup subviews and then align the views.

    [self alignSubViews];
}

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
                                         duration:(NSTimeInterval)duration 
{
    [self alignSubViews];
    scrollView.contentOffset = CGPointMake(self.currentPage * scrollView.bounds.size.width, 0);
}
...