Ответ 1
Лучшим решением является создание нового наследования класса из класса NSLayoutConstraint и добавление свойств ниже, например, у вас будет возможность изменить константу, множитель, а также деактивировать ограничение для каждого устройства и все это в построителе интерфейсов:
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
}
}
}
}