gpt4 book ai didi

ios - 修改父 View 的框架时自动调整 subview 的大小

转载 作者:行者123 更新时间:2023-11-28 05:58:36 25 4
gpt4 key购买 nike

我有一个绿色矩形 (viewA) 和一个内部红色矩形 (viewB)。如果我尝试修改 viewA 的尺寸,viewB 不会自动更改。

我尝试:

  • 检查 autoresizesSubviews 值(为真)
  • 设置一个autoresizingMask
  • 改变父 View 的边界而不是框架

所有这些解决方案都不起作用。

这是我的代码:

@IBOutlet weak var viewA: UIView!

@IBOutlet weak var button: UIButton!

override func viewDidLoad() {
super.viewDidLoad()
}

@IBAction func buttonAction(_ sender: Any) {
viewA.autoresizesSubviews = true
self.viewA.autoresizingMask = [.flexibleWidth, .flexibleHeight,.flexibleTopMargin, .flexibleLeftMargin, .flexibleRightMargin, .flexibleBottomMargin]
viewA.bounds = CGRect(x: 0, y: 0, width: 100, height: 100) // or frame instead of bounds
}

enter image description here enter image description here

谢谢大家。

编辑:

我在 Storyboard中添加了两个 View 。在这里您还可以看到 viewB 的约束。

enter image description here

最佳答案

不要混淆 View 的框架和自动布局,两者的行为不同。

您需要执行如下操作。

Constrains for viewA

  • CenterX 和 CenterY
  • (高度或宽度)和纵横比 1:1(表示等宽和等高)

Constraints for viewB

  • 其父 View (即 viewA)的前导、尾随、顶部和底部

现在您需要创建一个@IBOutlet 到您需要修改的(viewA 的)约束。

@IBOutlet weak var const_height_viewA: NSLayoutConstraints!

因此,在单击按钮时,您只需要更改约束的常量。

@IBAction func buttonAction(_ sender: Any) {
const_height_viewA.constant = 250
//changing height constraint of viewA will automatically updates viewB frame.
}

注意:无需修改viewB的约束,因为它会根据给定的约束自动调整。

图片引用

enter image description here

关于ios - 修改父 View 的框架时自动调整 subview 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50619096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com