web-dev-qa-db-ja.com

Maskstobounds vs clipstobounds

clipstoboundsmaskstoboundsの両方の点で同じ仕事をします。

私はそれらの間に違いを見つけることができませんでした。

誰かが親切に両方が異なっている方法を説明します。

masksToBounds

境界の外側に伸びるレイヤーのサブレイヤーは、それらの境界にクリップされます。レイヤーは、その場合、そのサブレイヤーへのウィンドウと考えてください。ウィンドウの端の外側は表示されません。 masksToBoundsがNOの場合、クリッピングは発生しません。

このプロパティの値がtrueの場合、Core Animationはレイヤーの境界に一致する暗黙のクリッピングマスクを作成し、コーナー半径効果を含めます。 maskプロパティの値も指定されている場合、2つのマスクが乗算されて最終的なマスク値が取得されます。

APIリファレンス で詳細情報を取得できます。

clipToBounds

ClipsToBoundsの使用例は、部分的にメインビューの外側にあるサブビューです。たとえば、親(長方形)UIViewのエッジに(円形)サブビューがあります。 clipsToBoundsをYESに設定すると、円/サブビューの半分のみが表示されます。 NOに設定すると、円全体が表示されます。ちょうどこれに遭遇したので共有したい

詳細については サンプルリンク

21
Anbu.Karthik

Clipstobounds:clipsToBoundsをYESに設定すると、スーパービューの境界内に収まるサブビューの部分のみが表示されます。そうでない場合、clipsToBoundsがNOに設定されていると、スーパービューの外側の部分も含めて、サブビュー全体が表示されます。

Maskstobounds:「masksToBounds」プロパティが「YES」に設定されている場合、境界の外側に伸びるレイヤーのサブレイヤーは、それらの境界にクリップされます。レイヤーは、その場合、そのサブレイヤーへのウィンドウと考えてください。ウィンドウの端の外側は表示されません。 「masksToBounds」がNOの場合、クリッピングは発生せず、レイヤーの境界の外側に広がるサブレイヤーはすべて表示されます(マスキングが有効になっているスーパーレイヤーのエッジの外側に出ない限り)。

17
Bhagabata