ПРИМЕЧАНИЕ. Я добавил новое решение в ответ UPDATE ниже.
Я пытаюсь воссоздать эффекты, которые мы видели на вкладке 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.