iOS如何激活/停用特定大小类(方向)的布局约束?

时间:2015-08-05 17:40:13

标签: ios animation autolayout constraints size-classes

我有一个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 个答案:

答案 0 :(得分:1)

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