LandscapeOrientation on start of didload method in objective c

前端 未结 3 1330
粉色の甜心
粉色の甜心 2021-01-13 23:34

I\'ve made an iPad application,

It works fine when I load my application in portrait mode for first time, but when I load my application in landscape mode for the fi

相关标签:
3条回答
  • 2021-01-13 23:47

    I had similar issue with UIScrollView. I had it fixed by aligning the subviews as suggested here.

    - (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);
    }
    
    0 讨论(0)
  • 2021-01-13 23:58

    You can do handling as below -

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

    and then finally custom method -

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

    }

    0 讨论(0)
  • 2021-01-14 00:11
    -(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
        }
    

    also call adjustViewtForNewOrientation in your ViewDidLaod() method,

    0 讨论(0)
提交回复
热议问题