如果我改变了UIView的界限。
v2.bounds = CGRect(0, 0, 70, 70)为了..。
v2.bounds = CGRect(-2000, 0, 70, 70)..。什么都没有发生--在渲染时,维度保持不变。为什么会这样呢?
发布于 2017-08-02 00:17:41
要帮助理解界限的作用,请在视图控制器的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分。
改变边界的原点会改变视图的坐标系,这会影响视图所有子视图的位置。然而,相对于它的超级观,它并不影响它的起源。为此,您应该更改框架的原点。
发布于 2017-08-01 23:37:48
界限只考虑到width和height,在示例中只更改origin,精确地更改x。要完成此任务,请使用frame属性:
v2.frame = CGRect(-2000, 0, 70, 70)https://stackoverflow.com/questions/45449149
复制相似问题