私は iOS SDK を試しており、次のUIView構造を持っています。
UIViewUIImageView- 背景画像のみUIImageView(CALayerマスクあり)UIScrollViewLabel
非常に単純な構造で、UIScrollView透明なレイヤーと 2 番目UIImageViewにマスクがあります。私がやろうとしているのは、CALayerマスクがスクロール ビュー内のコンテンツの位置に応じてその位置を移動することです。ユーザーがスクロールすると、マスクの位置が更新されます。UIScrollViewのデリゲートを使用して、この問題をすでに解決しました。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint contentOffset = scrollView.contentOffset;
contentOffset.y = -contentOffset.y;
self.overlayImageView.viewlayer.mask.position = contentOffset;
}
マスクは で作成されviewDidLoad、View Controller のライフサイクル中に変更されません。
問題は、マスク位置の更新が遅すぎることです。こうすることで、マスクはスクロール ビューのコンテンツに従っているように見えますが、一緒にスクロールしていません。scrollViewDidScrollデリゲート メソッドが正しく呼び出されます。
問題をよりよく理解していただくために、iOS シミュレーターで作成したビデオを添付します。 http://www.youtube.com/watch?v=w3xRl3LTngY
質問は次のとおりです。
マスクの更新を速くする方法はありますか、それとも iOS の限界ですか?