我可以针对4.7和5.5进行特定的自动布局约束

时间:2015-01-23 09:17:47

标签: ios xcode mobile autolayout

我可以通过使用自动布局和4.7(iPhone 6)和(iPhone 6 plus)的故事板来实现具体和不同的约束

例如,我希望图标有4像素的50像素,而4.7和#34的60像素;和#66;#66; iphone。?

2 个答案:

答案 0 :(得分:1)

您好,您有两种方式:

  • 将图标的宽度与屏幕宽度相关联。实际上,如果您希望屏幕为4英寸50px时图标的宽度为320px,则乘数为50.0/320.0 = 0.15625

    NSLayoutConstraint *constraint = [NSLayoutConstraint  
                                        constraintWithItem:iconImageView 
                                        attribute:NSLayoutAttributeWidth 
                                        relatedBy:NSLayoutRelationEqual 
                                        toItem:self.view 
                                        attribute:attribute:NSLayoutAttributeWidth 
                                        multiplier:0.15625 
                                        constant:0]; 
    
    [self.view addConstraint:constraint];
    

    显然也在proportional width/height上设置约束iconImageView。 按此比例,iPhone 6+上的图标宽度(以及高度)将导致414*0.15625 = 64.6875;

  • 第二种方式只是IBOutleticonImageView的固定宽度约束,并从检查屏幕宽度的代码中改变它:

    if ([UIScreen mainScreen].bounds.size.width == 320.0) {
        myConstraintsWidth.constant = 50.0;
    } .... and so on
    

    此处显然还在proportional width/height上设置约束iconImageView

IMO我非常喜欢第一种选择。它很干净,效果很好。

干杯!

答案 1 :(得分:0)

如果您询问是否可以仅使用Storyboard设置约束,我恐怕答案是否定的,这意味着您必须实现一些代码。

示例:请注意这是硬编码而不是优雅,只是向您展示精神

#define SCREEN_WIDTH MIN([UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height)

- (void)setImageWidthConstraint:(NSLayoutConstraint *)imageWidthConstraint {
    if (SCREEN_WIDTH == 320) { //iPhone 5s or earlier
        imageWidthConstraint.constant = 50;
    } else if (SCREEN_WIDTH == 375) { //iPhone 6
        imageWidthConstraint.constant = 60;
    } else if (SCREEN_WIDTH == 414) { //iPhone 6 Plus
        imageWidthConstraint.constant = 66;
    }
}