UIView
プロパティclipsToBounds
の使用方法を知りたい。
公式文書には次のように書かれています:
clipsToBounds
propertyサブビューをビューの境界に制限するかどうかを決定するブール値。
ディスカッション
この値をYES
に設定すると、サブビューがレシーバーの境界にクリップされます。NO
に設定すると、フレームがレシーバーの表示範囲を超えるサブビューはクリップされません。デフォルト値はNO
です。
しかし、これが正確に何を意味するのかはわかりません。 clipsToBounds
の使用方法このプロパティをYES
に正確に設定すると、どのような結果になりますか?またはNO
に?
スーパービューが両側に10単位のボックスであり、サブビューの幅が20ユニットで、clipsToBounds
がYES
に設定されている場合、境界内に収まるサブビューの部分のみが表示されます。スーパービューの。そうでない場合、clipsToBounds
がNO
に設定されていると、スーパービューの外側の部分も含めて、サブビュー全体が表示されます(まだ画面にいると仮定します)。
視覚的な例として、ストーリーボードに設定された次のビューを検討してください。
これは白いUIView
で、左上隅に単純な「1」または「2」のラベルが付いているので、これらをview1
またはview2
として説明できます。さらに、黒いビューは白いビューと同じサイズですが、原点は白いビューの中心にあります。
View ControllerのviewDidLoad
メソッドには、次のコードがあります。
- (void)viewDidLoad {
[super viewDidLoad];
self.view1.clipsToBounds = YES;
self.view2.clipsToBounds = NO;
}
override func viewDidLoad() {
super.viewDidLoad()
self.view1.clipsToBounds = true
self.view2.clipsToBounds = false
}
コードを実行してシミュレーターまたはデバイスで見ると、次の結果が得られます。
したがって、これらのビューは同じように設定されていますが(clipsToBounds
を除く)、見た目は異なります。これがclipsToBounds
が行うことです。 YES
に設定すると上位の結果が得られ、NO
に設定すると下位の結果が得られます。
ビュー階層をデバッグすると、ブラックボックスが実際に白いビューの境界を超えて広がっていることがより明確にわかりますが、アプリが実際に実行されている場合、ビュー2のみがこれを示します。
uiviewと影付きのテキストフィールドSwift 4
self.txtCurrent.layer.shadowOpacity = 0.5
self.txtCurrent.layer.shadowOffset = CGSize(width: 1.0, height: 1.0)
self.txtCurrent.layer.shadowRadius = 5.0
self.txtCurrent.layer.shadowColor = UIColor.black.cgColor
self.txtCurrent.layer.masksToBounds = false
影付きのuiview
self.yourview.layer.shadowOpacity = 0.5
self.yourview.layer.shadowOffset = CGSize(width: 1.0, height: 1.0)
self.yourview.layer.shadowRadius = 5.0
self.yourview.layer.shadowColor = UIColor.black.cgColor
self.yourview.layer.masksToBounds = false