繁体   English   中英

以编程方式快速更改纵横比约束

[英]Swift change aspect ratio constraint programmatically

我们有一个带有UIButton的 MainStoryBoard 和带有 4 个约束的UIView foo

  • foo 顶部到 superView 顶部
  • foo 导致 superView 领先
  • 尾随 foo 到 superView 尾随
  • foo 纵横比 16:9

按钮的预期行为应该是它更改 foo 约束,因此 foo 将扩展到全屏,如果再次按下它应该具有以前的纵横比,16:9。

我尝试按照以下步骤使用约束的IBOutlet执行此操作:

  • 展开:
    • 从 foo 中删除 aspectRatio 约束
    • 向 superView 底部添加 foo 底部约束
  • 崩溃时:
    • 将 foo 底部约束移除到 superView 底部
    • 将 aspectRatio 约束添加到 foo

我也玩过高度,什么都没有。 提前致谢。

您的初始约束应如下所示。

NSLayoutConstraint.activate([
    foo.leadingAnchor.constraint(equalTo: superView.leadingAnchor),
    foo.trailingAnchor.constraint(equalTo: superView.trailingAnchor),
    foo.topAnchor.constraint(equalTo: superView.topAnchor)
])

let collapsedConstraint = foo.heightAnchor.constraint(equalTo: foo.widthAnchor, multiplier: 9/16)
let expandedConstraint = foo.bottomAnchor.constraint(equalTo: superView.bottomAnchor)
collapsedConstraint.isActive = collapsed
expandedConstraint.isActive = !collapsed

被触发的方法应该像这样改变约束。

@objc func tapAction() {
    collapsedConstraint.isActive = collapsed
    expandedConstraint.isActive = !collapsed
    superView.layoutIfNeeded()
}

暂无
暂无

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

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