iPhone 6/plus等的小布局调整



我在情节提要中设置布局,以便根据屏幕大小动态调整。

除其他外,我将图像设置为与超视图的大小成比例(使用0.9常数匹配宽度和高度)。现在,在iPhone 6和6 plus上,图像看起来有点太大了。因此,对于这些屏幕,我想将常数设置为0.8。也许我也想设置一个更大的字体大小。

到目前为止,我读到尺寸等级不适用于此,因为所有iPhone人像只有一个等级。我不会创建一个新的故事板只是为了改变一个常量。。。

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

如果以编程方式进行操作是唯一的方法,那么推荐的方法是什么?

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

2) 如果以编程方式使用布局约束,最好的方法是在视图控制器的updateViewConstraints中进行更新。有两种技术,但对于这些要求来说,最简单的是"默认,低优先级非默认"

  1. 在IB中创建"默认"行为的约束,然后在IB中为非默认行为创建矛盾的约束。将相互矛盾的约束设置为较低的优先级。这应该会在你做的时候产生警告,但最后没有警告,只有一些虚线约束
  2. 为视图控制器的默认约束创建出口。将它们称为"pictureDefaultWidthConstraint"one_answers"pictureDefaultHeightConstraint"
  3. 在视图控制器的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];
    }
    

当然,当默认约束设置为非活动时,优先级较低的非默认约束就会生效。您可以设置其他条件,例如级联的一系列默认约束。将它保持在基于布尔编程测试激活的一系列约束中,可以使它保持可测试性和直观性。

最新更新