2015-07-28 107 views
1

我有parentViewController,它包含容器與customViewControllerautoresizing面具(靈活的寬度和高度)。容器的寬度大約是parentViewController視圖的80%。 當我旋轉設備viewWillTransitionToSize:withTransitionCoordinator:被稱爲但「錯誤」的大小。我得到parentsViewController查看大小。Autoresizingmask,viewWillTransitionToSize和rotation

這裏是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]; 
}