Я экспериментирую с iOS SDK, и у меня есть следующая структура UIView
:
-
UIView
-
UIImageView
- только фоновое изображение -
UIImageView
(с маскойCALayer
) -
UIScrollView
-
Label
-
-
Очень простая структура, UIScrollView
- прозрачный слой, а второй UIImageView
имеет на нем маску. То, что я пытаюсь сделать, это то, что маска CALayer
переместила бы ее положение в соответствии с положением содержимого в прокрутке. Если пользователь прокручивает, положение маски должно быть обновлено. Я уже решил эту проблему, используя UIScrollView
delegate:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint contentOffset = scrollView.contentOffset;
contentOffset.y = -contentOffset.y;
self.overlayImageView.viewlayer.mask.position = contentOffset;
}
Маска создается в viewDidLoad
и не изменяется во время жизненного цикла контроллера.
Проблема заключается в том, что обновление положения маски слишком медленное. Таким образом, он выглядит, что маска следит за просмотром содержимого прокрутки, а не прокручивается с ней. Метод делегата scrollViewDidScroll
вызывается правильно.
Чтобы лучше понять проблему, я прикрепляю видео, которое я сделал в iOS-симуляторе. http://www.youtube.com/watch?v=w3xRl3LTngY
Итак, вопрос:
Есть ли способ сделать обновление маски быстрее или это предел iOS?