[英]Swift trailing constraint spacing depending on width of superview multiplied with a value (programmatically)
假设我有一个UITableViewCell
。
在单元格的contentView
中,我有一个 subView。 子视图到的拖尾contentView
取决于所述的宽度contentView
,乘以一个值。
我想要实现的是:
let trailingSpacing: CGFloat = contentView.frame.size.width * 0.2
subView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -trailingSpacing).isActive = true
上面的layoutSubviews()
代码是我在UITableViewCell
layoutSubviews()
中尝试做的。 它不起作用,除此之外,它感觉不对。 有没有更干净的方法来做到这一点? 我不认为你可以在 1 个约束中做到这一点,但也许我错了。
约束都是在代码中完成的,没有故事板/xib/nib。
提前致谢!
我不确定您是否能够使用单个约束来解决它,但是您可以添加一个间隔视图来解决这个问题。 将间隔视图锚定到容器的尾部,并将“目标”视图的尾部锚定到间隔的前部。 然后,给间隔器一个宽度是容器宽度的倍数:
let constraint = NSLayoutConstraint(
item: spacer,
attribute: .width,
relatedBy: .equal,
toItem: container,
attribute: .width,
multiplier: 0.2, // <-- tweak this
constant: 0
)
container.addConstraint(constraint)
(您可能需要在约束中切换space
和container
,我总是忘记乘数应用于哪个。)
您甚至可以在 Interface Builder 中执行此解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.