У меня возникла следующая проблема.
i подклассифицировал uiscrollview, который contentOffset анимируется этим кодом:
[UIView animateWithDuration:1.0
delay:1.0
options:options
animations:^{
self.contentOffset = CGPointMake(label.frame.size.width, 0);
}
completion:^(BOOL completed) {
//some other stuff
}];
Теперь, когда пользователь "willBeginDragging" scrollview, я хочу остановить текущую анимацию и установить scrollview.contentoffset в текущую позицию, которую он имеет в uianimation.
например, пользователь входит в экран, через 1 секунду прокрутка начинает прокрутку, если пользователь коснется прокрутки через 2 секунды и перетащит ее, scrollview.contentoffset должен иметь точное положение текущей позиции анимации.
если я получаю значение смещения содержимого в методе willbegindrag, оно уже как последнее значение анимации, так как uianimation устанавливает значения в конечное состояние, а затем анимирует.
как получить текущую позицию смещения содержимого от запущенной анимации?
NSLog(@"pos of content x %f, y %f", [[self.layer presentationLayer] frame].origin.x, [[self.layer presentationLayer] frame].origin.y);
Я прочитал о слое презентации, но сам вид не анимирован, мне нужен scrollview.contentoffset.
mhh, любые идеи? ТНХ
УЖЕ РЕШЕННО:
Слой представления self.layer абсолютно корректен.
Но мне пришлось использовать границы, а не кадр....
Извините, теперь вы и я это знаем: P
Итак, правильный код:
CGPoint pos = [[self.layer presentationLayer] bounds].origin;
чтобы получить текущую позицию анимированного прокрутки во время анимации.