比如说A是一个imageView,B仅仅是一个普通的透明的view,我希望A被B盖住的部分是彩色的,而没有盖住的部分是黑白的,请问有什么实现的思路吗
黄舟2017-04-18 09:48:29
は A の layer.mask
実装を制御できます。マスクは A と B の重複領域です。rect
の塗りつぶし layer.mask
は、重複領域の path
を計算することで変更できます。多くのマスキング効果はマスクを使用して実現されます。
参考になるコードを書きました。プレイグラウンドで効果を直接確認できます:
リーリー正常に実行されると、プレイグラウンドのアシスタント エディターで次の効果が確認できます:
大家讲道理2017-04-18 09:48:29
1. AB の交点のサイズを計算します
2. 色付き部分の開始点を計算します
3. ベジェ曲線を使用して色付き部分を描画します
4. CAShapeLayer を使用してパスを設定します3番目のステップバイステップベジェ曲線に、レイヤーをAに追加します。
私の個人的な考えですが、ぜひ試してみてください。