2012-07-04 13 views
13

私のスクロールには、cornerRadius = 10.0masksToBounds = YESのビューがいくつかあります。masksToBoundsとcornerRadiusの間の関係は何ですか?

これは、スクロールビューをスクロールする際のパフォーマンス上の問題を引き起こします。私は各ビューのshouldRasterizeYESに設定しようとしましたが、問題は解決されません。

しかし、私はこの問題の解決策を知っています。つまり、masksToBoundNOに設定されています。 (masksToBound'sのデフォルト値はNOです) masksToBoundNOですが、私のビューのコーナーはまだカーブしており、パフォーマンスの問題も解決されています。

cornerRadiusmasksToBoundsの関係について知りたいです。この設定で予期しない問題が発生するのを恐れています。

ありがとうございます。

答えて

23

cornerRadiusの後に、受信者の背景の丸い角を描画するための半径を指定します。

masksToBoundsによって、サブレイヤが受信者の境界にクリップされるかどうかが決まります。したがって、YESに設定されている場合は、cornerRadiusプロパティの効果を含め、レイヤー境界に一致する暗黙のマスクがレイヤーに適用されます。 YESに設定され、maskプロパティが指定されている場合は、2つのマスクが乗算されて実際のマスク値が取得されます。例えば

あなたは画像の内容とCALayerにそれを設定すると、画像がまだコーナー半径境界の外側に描画されます。これを解決するにはsublayer.masksToBoundsYESに設定します。しかし、もしあなたがそれを行うならば、影が隠されるので、影は現れないでしょう!

-2

実際にコーナー半径を呼び出すと、渡された半径とMaskToBoundでビューがトリミングされます:それ以外の場合は表示されている部分に透明にします...

+3

明確ではない可能性もあります。 –

関連する問題