在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; }