gpt4 book ai didi

ios - 增加frame.origin.x与常量

转载 作者:行者123 更新时间:2023-11-29 05:24:05 24 4
gpt4 key购买 nike

我试图了解 iOS 框架和边界是如何工作的。我在 UIViewController 上放置了一个 subView:UIView 和一个可以增加 subView 的框架原点坐标并使用其值更改 textlabel 的按钮。

像这样,

let subView: UIView = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))

override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(subView)
subView.backgroundColor = .blue
}


@IBAction func btnMoveBottomView(_ sender: Any) {
subView.frame.origin.y = subView.frame.origin.y + 100
lbFrameInfo.text = String(format:"sub = (%.1f, %.1f)", subView.frame.origin.x, subView.frame.origin.y)
self.view.setNeedsLayout()
self.view.layoutIfNeeded()
}

执行此操作后,我看到 subview 下降,但文本没有改变。

在调试控制台上我看到了这个变化

po subView.frame.origin
▿ (50.0, 2350.0)
- x : 50.0
- y : 2350.0

updateViewConstraints 也被调用。

override func updateViewConstraints() {
print("updateViewConstraints")
super.updateViewConstraints()
}

不是像这样增加frame.origin.x,增加前导常量的值可以完美地工作。

如果有人能指导我这些差异和框架的概念以及它是否与自动布局相关,我将不胜感激

最佳答案

根据你的问题,您已将 subview 添加到 ViewController View 中,因此当您创建 View 时

 let subView: UIView = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))

然后执行此操作

 view.addSubview(subView)

这意味着您的 subview 将位于屏幕左侧下方 50 的位置。所以当你这样做时。

 subView.frame.origin.y = subView.frame.origin.y + 100

当您更改框架的 y 位置(即在屏幕上创建 View 的起始位置)时,它将在屏幕中进一步向下移动框架。

最简单的是, View 的边界是指其相对于其自己的 View 的坐标(就好像 View 层次结构的其余部分不存在一样),而它的边界框架是指其相对于其父 View 的坐标。框架将反射(reflect)其 parent View 中的位置。这意味着以下几点:

1.如果你在X:0,Y:0,宽度:100,高度:100处创建一个 View ,它的框架和边界是相同的。

2.如果将该 View 移动到 X:100,其框架将反射(reflect)该更改,但其边界不会反射(reflect)。请记住,边界是相对于 View 自己的空间而言的,并且 View 内部没有任何变化。

3.如果你变换 View ,例如旋转它或放大它,框架会改变以反射(reflect)这一点,但边界仍然不会 - 就 View 内部而言,它没有改变

希望能消除你的疑虑

关于ios - 增加frame.origin.x与常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58369229/

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