Ios 自动调整屏幕大小、视图大小和旋转

Ios 自动调整屏幕大小、视图大小和旋转,ios,rotation,autoresizingmask,viewwilltransitiontosize,Ios,Rotation,Autoresizingmask,Viewwilltransitiontosize,我有parentViewController,它包含带有customViewController和自动调整大小掩码(灵活的宽度和高度)的容器。容器的宽度约为父视图控制器视图的80%。 当我旋转设备时,viewwilltransitionosize:withtransitionocordinator:被调用,但大小“错误”。我得到parentsViewController视图大小 这是customViewController -(void)viewWillTransitionToSize:(CGS

我有
parentViewController
,它包含带有
customViewController
自动调整大小
掩码(灵活的宽度和高度)的容器。容器的宽度约为父视图控制器视图的80%。 当我旋转设备时,
viewwilltransitionosize:withtransitionocordinator:
被调用,但大小“错误”。我得到
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
-(void)视图将转换大小:(CGSize)带有转换协调器的大小:(id)协调器
{
NSLog(@“viewwilltransitionosize%@”,NSStringFromCGSize(size));
[super ViewWillTransitionSize:size with TransitionCoordinator:coordinator];
[self resizeViewToWidth:size.width];
[自执行选择器:@selector(didRotate)with object:nil afterDelay:1.0];
}
-(空)旋转
{
NSLog(@“didRotate%@”,NSStringFromCGSize(self.view.frame.size));
}
//它创建这个日志
//视图大小{667331}
//didRotate{617,311}//应用自动调整大小掩码后,这是正确的大小
当我看到至少两种不同的尺寸时,为什么只调用一次? 我不想计算视图大小,如果自动调整遮罩大小可以为我这样做

如何让应用自动调整大小的遮罩先应用,然后在应用后获得大小


当使用自动调整大小的遮罩时,使用视图大小的正确方法是什么。它实际上覆盖了自动调整大小掩码,但我找不到更好的解决方案,这符合我的要求

我使用方法
sizeForArchildContentContainer:withParentContainerSize:
of。在方法中,我检查子容器并应用和自动调整大小本身相同的更改
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];
}
-(CGSize)大小ArchildContentContainer:(id)容器withParentContainerSize:(CGSize)parentSize
{
if([container iskindof类:[customViewController类]])
{
返回CGSizeMake(parentSize.width-magicNumber,parentSize.height);
}
return[super-sizeForChildContentContainer:container withParentContainerSize:parentSize];
}

我用下面的方法解决了它。它实际上覆盖了自动调整大小掩码,但我找不到更好的解决方案,这符合我的要求

我使用方法
sizeForArchildContentContainer:withParentContainerSize:
of。在方法中,我检查子容器并应用和自动调整大小本身相同的更改
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];
}
-(CGSize)大小ArchildContentContainer:(id)容器withParentContainerSize:(CGSize)parentSize
{
if([container iskindof类:[customViewController类]])
{
返回CGSizeMake(parentSize.width-magicNumber,parentSize.height);
}
return[super-sizeForChildContentContainer:container withParentContainerSize:parentSize];
}