我遇到了以下问题。
我对 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秒后 ScrollView 开始滚动,如果用户在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);
我读过有关表示层的内容,但 View 本身不是动画的,我需要scrollview.contentoffset。
嗯,有什么想法吗?谢谢
已经解决:
self.layerpresentationLayer 是绝对正确的。
但我必须使用边界而不是框架......
抱歉,现在你和我都知道了:P
所以正确的代码是:
CGPoint pos = [[self.layer presentationLayer] bounds].origin;
在动画时获取动画 ScrollView 的当前位置。
最佳答案
您可以使用以下代码获取 ScrollView 滚动时的内容偏移量...
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"%f", scrollView.contentOffset.x);
}
关于iphone - 获取动画 ScrollView 的当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346952/