2012-11-30 2 views
1

Я установил ориентацию в ландшафт, оставшийся в RootViewController, но в viewDidLoad или viewWillAppear границы представления VC не вращаются. В viewDidAppear он имеет правильный фрейм. Я не думаю, что это хорошее место в viewDidAppear, как мне это сделать?Где я должен установить рамку subview в ViewController

@implementation RootViewController 


    - (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     CGRect frame = self.view.bounds; 
    } 

    - (void)viewWillAppear:(BOOL)animated 
    { 
     [super viewWillAppear:animated]; 
     CGRect frame = self.view.bounds; 

    } 

    - (void)viewDidAppear:(BOOL)animated 
    { 
     [super viewDidAppear:animated]; 
     CGRect frame = self.view.bounds; 
    } 

    #pragma mark - Orientation 

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
    { 
     return toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft; 
    } 

    //for iOS 6 or later 

    - (BOOL)shouldAutorotate 
    { 
     return YES; 
    } 

    - (NSUInteger)supportedInterfaceOrientations 
    { 
     return UIInterfaceOrientationMaskLandscapeLeft; 
    } 

    @end   

И журнал показывает, что:

viewDidLoad,x = 0.000000, y = 0.000000,w = 300.000000 h = 480.000000 
    viewWillAppear:,x = 0.000000, y = 0.000000,w = 300.000000 h = 480.000000 
    viewDidAppear:,x = 0.000000, y = 0.000000,w = 480.000000 h = 300.000000 

ответ

1

Вы можете установить кадр после изменения ориентации:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
+0

Я попробовал, он не называл этот метод .. – DJean

0

Я думаю, что это должно быть в этой функции

  • (vo ID) viewDidLayoutSubviews {}

документ от Apple говорит enter image description here

+0

Вы можете оставить свой комментарий к "не хорошо"? –

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