Получить текущую позицию анимированного прокрутки - PullRequest
14 голосов
/ 08 сентября 2011

У меня возникла следующая проблема.

Я разделил 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.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.

ммм, есть идеи?thx

УЖЕ РЕШЕНО:

Уровень представления self.layer абсолютно корректен.

Но мне пришлось использовать границы, а не рамку ....

Извините, теперь вы и я это знаем: P

Итак, правильный код:

CGPoint pos = [[self.layer presentationLayer] bounds].origin;

, чтобы получить текущую позицию анимированного прокрутки при анимации.

1 Ответ

9 голосов
/ 08 сентября 2011

Вы можете получить смещение содержимого во время прокрутки ScrollView, используя следующий код ...

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{

 NSLog(@"%f", scrollView.contentOffset.x);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...