当我改变界限时为什么不查看改变?

时间:2017-08-01 23:30:30

标签: ios uikit

如果我改变了UIView的界限......

v2.bounds = CGRect(0, 0, 70, 70)

为...

v2.bounds = CGRect(-2000, 0, 70, 70)

......没有任何反应 - 渲染时尺寸保持不变。这是为什么?

2 个答案:

答案 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