繁体   English   中英

Swift 尾随约束间距取决于父视图的宽度乘以一个值(以编程方式)

[英]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)

(您可能需要在约束中切换spacecontainer ,我总是忘记乘数应用于哪个。)

您甚至可以在 Interface Builder 中执行此解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM