如果我改變一個UIView的邊界從...當我更改界限時,爲什麼不查看更改?
v2.bounds = CGRect(0, 0, 70, 70)
到...
v2.bounds = CGRect(-2000, 0, 70, 70)
...沒有任何反應 - 尺寸保持不變時渲染。爲什麼是這樣?
如果我改變一個UIView的邊界從...當我更改界限時,爲什麼不查看更改?
v2.bounds = CGRect(0, 0, 70, 70)
到...
v2.bounds = CGRect(-2000, 0, 70, 70)
...沒有任何反應 - 尺寸保持不變時渲染。爲什麼是這樣?
爲了幫助理解什麼範圍呢,運行在一個視圖控制器的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分。
更改邊界的原點將更改視圖的座標系,這將影響其所有子視圖的位置。但是,它的超級觀點並不影響其來源。爲此,您應該更改框架的原點。
界只考慮width
和height
,你只改變了origin
在你的榜樣,只有改變x
要精確。要做到這一點使用frame
屬性:
v2.frame = CGRect(-2000, 0, 70, 70)
這是堅果。如果只設置寬度和高度,爲什麼界限是CGRect? –
它是自己座標系中的矩形,主要用於操作。 這裏的文檔:https://developer.apple.com/documentation/uikit/uiview/1622580-bounds – zero
當它說「x:10」時,它是什麼十個? –
這是10分,我有一個答案,討論什麼點[這裏](https://stackoverflow.com/a/45083468/5099014)。 [This](http://iosres.com)也很有用(請參閱邏輯分辨率)。 –
那麼10點相對於什麼? –