iOS如何激活/停用某个尺寸类(方向)的布局约束?

Posted

技术标签:

【中文标题】iOS如何激活/停用某个尺寸类(方向)的布局约束?【英文标题】:iOS how to activate/deactivate layout constraints for a certain size class (orientation)? 【发布时间】:2015-08-05 17:40:13 【问题描述】:

我有一个使用尺寸类和自动布局设计的 ios 应用通用界面。在应用程序中,我通过激活和停用约束来制作基于约束的动画。

以下方法适用于“纵向”,但是,我为“横向”尺寸类安装了可选约束。 在激活/停用动画约束时如何考虑当前的屏幕尺寸等级?

例如,我希望我的动画代码知道它是否应该激活某些约束集,而不是其他约束。

-(NSArray*)layoutFullScreen

    return @[self.imageYCenterConstraint,
             self.imageWidthRatioConstraint];


-(NSArray*)layoutWorkingScreen

    return  @[self.textLabelCenterYConstraint,
              self.imageHeightRatioConstraint];


-(void)doAnimation

        [NSLayoutConstraint deactivateConstraints:[self layoutFullScreen]];
        [NSLayoutConstraint activateConstraints:[self layoutWorkingScreen]];

        [UIView animateWithDuration:0.6 delay:0 options:0 animations:^
            [self.view layoutIfNeeded];

         completion:^(BOOL finished) 
        ];

【问题讨论】:

【参考方案1】:

如果您使用大小类,则不能考虑旋转,而是考虑 UITraitsCollections。您可以处理 traitCollectionDidChange: 中的大小类更改并相应地修复您的约束。

【讨论】:

以上是关于iOS如何激活/停用某个尺寸类(方向)的布局约束?的主要内容,如果未能解决你的问题,请参考以下文章

更改尺寸等级时会影响约束

如何激活以前停用的约束?

自动布局约束随尺寸类更新

不同设备尺寸的 iOS 自动布局约束值

自动旋转时自动布局约束更新

ios7 忽略任何大小类