如果我改变了UIView的界限......
v2.bounds = CGRect(0, 0, 70, 70)
为...
v2.bounds = CGRect(-2000, 0, 70, 70)
......没有任何反应 - 渲染时尺寸保持不变。这是为什么?
答案 0 :(得分:1)
为了帮助理解边界的作用,请在视图控制器的viewDidLoad方法中运行此示例代码:
let newView = UIView(frame: CGRect(x: 50, y: 100, width: 30, height: 30))
newView.backgroundColor = UIColor.blue
let secondView = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
secondView.backgroundColor = UIColor.red
newView.addSubview(secondView)
view.addSubview(newView)
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
newView.bounds = CGRect(x: 10, y: 0, width: 30, height: 30)
}
这里我们向右移动边界10点,所以你会看到“第二个视图”(红色)向左移动10个点。
更改边界的原点会更改视图的坐标系,这会影响其所有子视图的位置。然而,它的超视图并不影响它的起源。为此,您应该更改框架的原点。
答案 1 :(得分:0)
界限只考虑.off()
和width
,您只是在更改示例中的height
,而只是更改origin
。要完成此操作,请使用x
属性:
frame