2015-07-28 2 views
1

У меня есть parentViewController и содержит Контейнер с customViewController с autoresizing масками (гибкая ширина и высота). Ширина контейнера составляет ~ 80% от parentViewController. При повороте устройства viewWillTransitionToSize:withTransitionCoordinator: вызывается, но с «неправильным» размером. Я получаю parentsViewController вид размера.Autoresizingmask, viewWillTransitionToSize и вращение

Вот часть customViewController

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 
{ 
    NSLog(@"viewWillTransitionToSize %@", NSStringFromCGSize(size)); 
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; 
    [self resizeViewToWidth:size.width]; 
    [self performSelector:@selector(didRotate) withObject:nil afterDelay:1.0]; 
} 

-(void)didRotate 
{ 
    NSLog(@"didRotate %@", NSStringFromCGSize(self.view.frame.size)); 
} 

//it creates this log 
//viewWillTransitionToSize {667, 331} 
//didRotate {617, 311} //this is correct size after applying autoresizing masks 

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

Как разрешить применять маски автоматического изменения первый, а затем получить размер после применения?

Что является правильным способом использования viewWillTransitionToSize при использовании маски автоматического изменения?

ответ

0

Я решил это следующим образом. Это фактически переопределяет маску авторезистировки, но я не мог найти лучшего решения, и это соответствует моим требованиям.

Я использую метод sizeForChildContentContainer:withParentContainerSize: из UIContentContainer. В методе я проверяю дочерний контейнер и применяю те же изменения, что и авторезистирование. magicNumber аббревиатура для пользовательских расчетов.

-(CGSize)sizeForChildContentContainer:(id<UIContentContainer>)container withParentContainerSize:(CGSize)parentSize 
{ 
    if ([container isKindOfClass:[customViewController class]]) 
    { 
     return CGSizeMake(parentSize.width - magicNumber, parentSize.height); 
    } 
    return [super sizeForChildContentContainer:container withParentContainerSize:parentSize]; 
} 
Смежные вопросы