かなり精巧なマスクやOHPには、CALayersを使用する素晴らしいカスタムUIViewがあります。私はスムーズに動作させる方法を理解するのに時間がかかりましたが、コンテナのUIViewに関連するオブジェクトをラップし、コンテナのlayer.shouldRasterizeをYESに設定し、含まれているすべてのビューのプロパティをNOに設定するとあなたのブレンドがいかに精巧であっても、バターのような滑らかさを発揮します。UIScrollViewでオフスクリーンでスクロールすると、CALayerのラスタライズが失われる
それはこのように、基本的です:
UIScrollViewの
コンテナビュー(layer.shouldRasterize = YES)
- 子(layer.shouldRasterize = NO)
- childOfChild( layer.shouldRasterize = NO)
- 子(layer.shouldRasterize = NO)
- 子(layer.shouldRasterize = NO)
コンテナ...
コンテナ...(など)
基本的に、コンテナはラスタライズ時に1つの大きなブロックイメージとして終了し、実行する必要があるラスタライゼーションの量を最小限に抑えます。しかし、これは私にとって新しい問題を作り出しました。 UIScrollViewに複数のコンテナがある場合、コンテナの1つがオフスクリーンでスクロールされるとすぐに、CoreAnimationプロファイラで「赤」というタグが付けられます。したがって、画面上をスクロールすると再びレンダリングする必要があります。これは簡単な吃音を引き起こす。コンテナのレイヤーが何度もラスタライズされなければならない理由は分かりません。誰でもこれを説明することができますか、おそらく回避策を提供できますか?ありがとう。