私は...境界を変更したときに変更が表示されないのはなぜですか?
v2.bounds = CGRect(0, 0, 70, 70)
に...からのUIViewの境界を変更した場合
v2.bounds = CGRect(-2000, 0, 70, 70)
...何も起こりません - 寸法は、レンダリング時に同じまま。どうしてこれなの?
私は...境界を変更したときに変更が表示されないのはなぜですか?
v2.bounds = CGRect(0, 0, 70, 70)
に...からのUIViewの境界を変更した場合
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ポイントであるので、「第2のビュー」(赤色)が10ポイント左に移動します。
境界の原点を変更すると、ビューの座標系が変更され、ビューのすべてのサブビューの位置に影響します。しかし、それはそのスーパービューに関してその起源に影響を与えません。そのためには、フレームの原点を変更する必要があります。
境界のみアカウントwidth
とheight
にとり、あなただけのだけ正確にx
を変え、あなたの例ではorigin
を変更しています。この使用に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ポイントは何に相対的ですか? –