在IB中仅更改iPhone 4的约束值

我怎样才能改变只有一个设备的约束的价值。 例如,我想显示一个400像素的高度的button,除了iPhone 4,我会显示300像素的所有iPhone?

最好的解决scheme是从NSLayoutConstraint类创build新的类inheritance,并添加下面的属性,就像你将有可能改变常量,乘数,并取消激活每个设备的约束和所有这些在接口生成器中

在这里输入图像说明

import UIKit /** * This class used to modify easly the constraint for each device iPhone 4, iPhone 5, iPhone 6 or iPhone 6 Plus * You can modify the constant, the multiplier and also active / deactive the constraint for each device * You should modify this properties only in the storyboard */ @IBDesignable public class LayoutConstraint: NSLayoutConstraint { // MARK: 📱3¨5 /** * The constant for device with 3.5 insh size * The default value is the value of the constant of the constraint. */ @IBInspectable public var 📱3¨5_const: CGFloat = 0 { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 480 { constant = 📱3¨5_const } } } /** * The multiplier for device with 3.5 insh size * The default value is the value of the constant of the constraint. */ @IBInspectable public var 📱3¨5_multip: CGFloat = 0 { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 480 { self.setValue(📱3¨5_multip, forKey: "multiplier") } } } /** * The boolean to active deative constraint for device with 3.5 insh size * The default value is true. */ @IBInspectable public var 📱3¨5_active: Bool = true { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 480 { active = 📱3¨5_active } } } // MARK: 📱4¨0 /** * The constant for device with 4.0 insh size * The default value is the value of the constant of the constraint. */ @IBInspectable public var 📱4¨0_const: CGFloat = 0 { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 568 { constant = 📱4¨0_const } } } /** * The multiplier for device with 4.0 insh size * The default value is the value of the constant of the constraint. */ @IBInspectable public var 📱4¨0_multip: CGFloat = 0 { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 568 { self.setValue(📱4¨0_multip, forKey: "multiplier") } } } /** * The boolean to active deative constraint for device with 4.0 insh size * The default value is true. */ @IBInspectable public var 📱4¨0_active: Bool = true { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 568 { active = 📱4¨0_active } } } // MARK: 📱4¨7 /** * The constant for device with 4.7 insh size * The default value is the value of the constant of the constraint. */ @IBInspectable public var 📱4¨7_const: CGFloat = 0 { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 667 { constant = 📱4¨7_const } } } /** * The multiplier for device with 4.7 insh size * The default value is the value of the constant of the constraint. */ @IBInspectable public var 📱4¨7_multip: CGFloat = 0 { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 667 { self.setValue(📱4¨7_multip, forKey: "multiplier") } } } /** * The boolean to active deative constraint for device with 4.7 insh size * The default value is true. */ @IBInspectable public var 📱4¨7_active: Bool = true { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 667 { active = 📱4¨7_active } } } // MARK: 📱5¨5 /** * The constant for device with 5.5 insh size * The default value is the value of the constant of the constraint. */ @IBInspectable public var 📱5¨5_const: CGFloat = 0 { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 736 { constant = 📱5¨5_const } } } /** * The multiplier for device with 5.5 insh size * The default value is the value of the constant of the constraint. */ @IBInspectable public var 📱5¨5_multip: CGFloat = 0 { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 736 { self.setValue(📱5¨5_multip, forKey: "multiplier") } } } /** * The boolean to active / deactive constraint for device with 5.5 insh size * The default value is true. */ @IBInspectable public var 📱5¨5_active: Bool = true { didSet { if CGRectGetMaxY(UIScreen.mainScreen().bounds) == 736 { active = 📱5¨5_active } } } } 

你可以把你的约束出口,并根据你正在运行的设备来改变它的值。如果iphone4然后300px其他400px使用“ 常数 ”属性的sockets

你可以采取那个button的高度限制的出口。 那么你可以检测到设备,如果它是iPhone 4,那么你可以改变它的约束的出口constant东西,

  self.heightConstraint.constant = 300; 

为了连接约束出口,只需按ctrl + drag from that constraint to class

您可以通过获取屏幕大小来检测设备。

 if ([ [ UIScreen mainScreen ] bounds ].size.height == 480.00) { NSLog(@"this is iphn 4"); self.heightConstraint.constant = 300; } 

希望这会帮助:)

首先创buildbutton高度约束的对象(btnConstHeight)

 if ([ [ UIScreen mainScreen ] bounds ].size.height == 480.00) { self.btnConstHeight.constant = 300; } else{ self.btnConstHeight.constant = 400; }