Неверный размер кадра в viewdidload, viewdidappear

Используя iOS8. Размер кадра UIViewController's представление неверно в viewDidLoad а также viewDidAppear, Я мог бы получить правильный размер кадра из viewDidLayoutSubviews и выполнять обновления вида (мне нужно сделать макет недействительным), но потом обрабатывать ротацию viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator становится бессмысленным, и 2 метода изгоняют его.

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

Я хочу избежать использования всевозможных волшебных флагов, относящихся к поворотам и изменениям размера кадра.

Есть ли способ получить "истинный" размер представления контроллера представления, прежде чем это произойдет?

РЕДАКТИРОВАТЬ

Вот пример кода:

-(void)viewDidLoad {
  [super viewDidLoad];
  NSLog(@"My Frame = %@",NSStringFromCGRect(self.view.frame)); // prints 320x568 i.e. the whole screen
  // more setup code...
  self.someView = [SomeClass alloc] initWithFrame:self.view.bounds];
  self.someView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  // add some more views and masks
}

-(void)viewDidAppear {
  [super viewDidAppear];
  NSLog(@"My Frame = %@",NSStringFromCGRect(self.view.frame)); // prints 320x568 i.e. the whole screen

 // view "sticks" out the bottom of the screen still - don't know if I need to layout "self.someView". I could add "viewWillLayoutSubviews" but than rotation wouldn't be animated - because I wouldn't know which condition to take...
}

// if the view controller rotates than need to update appearance in a nice animated way
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        [self updateAppearance];
    } completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {

    }];
}

0 ответов