以编程方式更改中心 X / Y 的对齐约束的乘数
Posted
技术标签:
【中文标题】以编程方式更改中心 X / Y 的对齐约束的乘数【英文标题】:Programmatically Change multiplier of Alignment Constraint of Center X / Y 【发布时间】:2016-01-20 22:44:19 【问题描述】:如何以最简单的方式以编程方式更改乘数?
对于 Swift 2.0
【问题讨论】:
multiplier 是只读的,对于动画和运行时约束的编程调整,据我所知建议使用常量。 你尝试过***.com/questions/19593641/…这里的解决方案吗? 【参考方案1】:所以对于 Y,如果您将图像的顶部设置为等于常量 0 到 superView 的顶部。然后输入此代码:
@IBOutlet weak var topc: NSLayoutConstraint!
let heightOfSuperview = self.view.bounds.height
topc.constant = heightOfSuperview * 0.90 // this has the same effect as multiplier
这相当于 Center.y 乘数 = 0.9:1
【讨论】:
你是最棒的!我正试图用我的头打破墙壁,你给了我头痛的药丸:) 除非这不起作用,因为它是 constant,正如访问者所建议的那样。如果您调整视图大小,则此测量值不会像multiplier
那样按比例调整。【参考方案2】:
我尝试使用扩展,但它不起作用,但更改为全局实用功能,它对我有用:
public class func changeMultiplier(constraint: NSLayoutConstraint, multiplier: CGFloat) -> NSLayoutConstraint
let newConstraint = NSLayoutConstraint(
item: constraint.firstItem,
attribute: constraint.firstAttribute,
relatedBy: constraint.relation,
toItem: constraint.secondItem,
attribute: constraint.secondAttribute,
multiplier: multiplier,
constant: constraint.constant)
newConstraint.priority = constraint.priority
NSLayoutConstraint.deactivateConstraints([constraint])
NSLayoutConstraint.activateConstraints([newConstraint])
return newConstraint
【讨论】:
以上是关于以编程方式更改中心 X / Y 的对齐约束的乘数的主要内容,如果未能解决你的问题,请参考以下文章