适用于iPhone 6 / plus等的小布局调整

时间:2015-02-16 12:42:10

标签: ios autolayout

我在故事板中设置布局以动态调整屏幕大小。

除此之外,我将图像设置为与尺寸超视图成比例缩放(匹配宽度和高度为0.9常量)。现在,在iPhone 6和6上加上图像看起来有点太大了。所以对于这些屏幕,我想将常量设置为0.8。也许我想设置更大的字体大小。

到目前为止,我读到尺寸类不适用于此,因为所有iPhone肖像只有1个类。而且我不打算创建一个新的故事板只是为了改变一个常数......

有没有办法在故事板中这样做?或者我是否必须以编程方式检查屏幕大小(:()?

如果以编程方式执行操作是唯一的方法,建议的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您可以使用常量值定义最大宽度(和/或高度),则可以使用“小于或等于”值来设置更高优先级的约束。因此,如果看起来好的最大宽度约为315,则使“等宽度* 0.9”约束优先于约束“小于或等于315”。

2)如果以编程方式使用Layout Constraints,最好的方法是在View Controller的updateViewConstraints中更新。有几种技术,但这些要求最简单的是“默认,低优先级非默认”。

  1. 在IB中为“默认”行为创建约束,然后在IB中为非默认行为创建矛盾约束。将矛盾约束设置为较低优先级。这应该在你做的时候产生警告,但最后没有警告,只是一些虚线约束。
  2. 为视图控制器创建默认约束的出口。请将这些称为“pictureDefaultWidthConstraint”和“pictureDefaultHeightConstraint”。
  3. 在View Controller的updateViewConstraints中,根据所需行为设置默认约束有效或无效:

    -(void)updateViewConstraints {
    
    BOOL useDefaultSizes = YES;
    if (self.view.frame.size.width > 320) {
        useDefaultSizes = NO;
    }
    
    self.pictureDefaultWidthConstraint.active = useDefaultSizes;
    self.pictureDefaultHeightConstraint.active = useDefaultSizes;
    
    [super updateViewConstraints];
    }
    
  4. 当然,当默认约束设置为非活动时,优先级较低的非默认约束会启动。您可以设置其他条件,例如级联系列的默认值。将其保留为基于布尔编程测试激活的一系列约束使其保持可测试性和直接性。