1

我有parentViewController,它包含customViewController带有autoresizing掩码的容器(灵活的宽度和高度)。容器的宽度约为parentViewController视图的 80%。当我旋转设备viewWillTransitionToSize:withTransitionCoordinator:被调用但尺寸“错误”时。我得到parentsViewController视图大小。

这是一部分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使用自动调整大小的蒙版时正确的使用方法是什么?

4

1 回答 1

0

我按照以下方式解决了。它实际上是覆盖自动调整大小的蒙版,但我找不到更好的解决方案,这符合我的要求。

我使用UIContentContainersizeForChildContentContainer:withParentContainerSize:的方法。在方法中,我检查子容器并应用与自动调整大小相同的更改。是自定义计算的缩写。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];
}
于 2015-08-03T07:27:24.833 回答