ich mit iOS SDK am Experimentieren und ich habe folgendes UIView
Struktur:Verschieben CALayer Maske auf blättern in einem Scroll
UIView
UIImageView
- nur ein HintergrundbildUIImageView
(mit einemCALayer
Maske)UIScrollView
Label
sehr einfache Struktur, ist UIScrollView
transparente Schicht und die zweite UIImageView
weist eine Maske auf ihr. Was ich versuche zu tun ist, dass die CALayer
Maske ihre Position entsprechend der Position des Inhalts in der Bildlaufansicht verschiebt. Wenn der Benutzer scrollt, sollte die Position der Maske aktualisiert werden. Ich löste dieses Problem bereits durch UIScrollView
‚s Delegierten mit:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint contentOffset = scrollView.contentOffset;
contentOffset.y = -contentOffset.y;
self.overlayImageView.viewlayer.mask.position = contentOffset;
}
Maske ist in viewDidLoad
erstellt und ändert sich nicht während der View-Controller-Lebenszyklus.
Das Problem ist, dass die Aktualisierung der Maskenposition zu langsam ist. So sieht es aus, dass die Maske dem Inhalt der Bildlaufansicht folgt und nicht mit ihr scrollt. Die Delegatenmethode scrollViewDidScroll
wird ordnungsgemäß aufgerufen.
Damit Sie das Problem besser verstehen, füge ich ein Video an, das ich im iOS-Simulator erstellt habe. http://www.youtube.com/watch?v=w3xRl3LTngY
Die Frage ist also:
Gibt es eine Möglichkeit Maske Aktualisierung schneller zu machen oder dies ist die Grenze von iOS?
Große, das Problem behebt. Vielen Dank. Änderungen der Maskenposition sind jetzt viel flüssiger. – Legoless