iOS leftSpacingConstraint相对于屏幕高度

时间:2017-05-29 12:32:10

标签: ios objective-c nslayoutconstraint

我正在开发一个较旧的iOS项目,主要是在Objective C中编写的。 我在代码中有这些行(将对象设置到屏幕中间):

self.leftSpacingConstraint.constant = 250.0;
self.rightSpacingConstraint.constant = 250.0;

我想相对于屏幕宽度更改这些约束。我该怎么办? 感谢

2 个答案:

答案 0 :(得分:1)

也许是这样的:

[NSLayoutConstraint constraintWithItem:self
                         attribute:NSLayoutAttributeCenterX
                         relatedBy:NSLayoutRelationEqual
                            toItem:self.superview
                         attribute:NSLayoutAttributeCenterX
                        multiplier:1.f constant:0.f]];

或者,如果您使用.xib文件,请删除leftright约束并添加centerHorizontal

答案 1 :(得分:1)

查看设备的屏幕宽度,并根据您的需要应用正确的常量。

    // iPhone 6Plus / 6s Plust / 7Plus = 414
    // iPhone 6 / 6s / 7 / 7s = 375
    // iPhone 5 / 5s / SE = 325
    // sizes: http://www.idev101.com/code/User_Interface/sizes.html
    NSInteger screenWidth = (NSInteger)[[UIScreen mainScreen] bounds].size.width;
    CGFloat leftConstant = 0;
    CGFloat rightConstant = 0;
    switch (screenWidth) {
    case 325:
            leftConstant = 1;
            rightConstant = 1;
            break;
    case 375:
            leftConstant = 2;
            rightConstant = 2;
            break;
    case 414:
            leftConstant = 3;
            rightConstant = 3;
            break;
    }

    self.leftSpacingConstraint.constant = leftConstant;
    self.rightSpacingConstraint.constant = rightConstant;

这是一种简单的方法,您可以定义macros,或者将third party libraries拉入我们的项目。