ПРИМЕЧАНИЕ: я добавил свое новое решение в ответе ОБНОВЛЕНИЯ ниже.
Я пытаюсь воссоздать эффекты, которые мы видели на вкладке Mobile Safari на iPhone / iPod touch.
По сути, это UIScrollView, который содержит 4 многократно используемых UIView (действует как кольцевой буфер) и прокручивает по горизонтали. При прокрутке, непрозрачность UIView будет плавно исчезать со смещением.
В настоящее время я делаю всю грязную работу в - (void)scrollViewDidScroll:(UIScrollView *)scrollView
. Например, получение contentOffset из UIScrollView, определение постраничного представления, вычисление разницы между contentOffset и каждым положением UIView и определение / установка значения альфа каждого UIView в момент вызова scrollViewDidScroll:
.
И это работает, с производительностью все в порядке, все идет гладко, но единственная проблема - слишком много вычислений.
Я пробовал UIView beginAnimations:
и commitAnimations:
, но в scrollViewDidScroll:
это бесполезно, поскольку 1) новое альфа-значение все еще нужно вычислять самостоятельно, и 2) scrollViewDidScroll: вызывается при прокрутке, бессмысленно сделать анимацию здесь. Есть ли способ переписать эту часть с Core Animation? Так что мне не нужно делать математику самостоятельно по альфа-значению каждого UIView, вместо этого я могу оставить все работы в Core Animation.