我有一个滚动视图和一些图像。当滚动视图scrollView.contentOffset.x
超过某个 X 时,我上面的图像应该动画。
我知道如何制作动画。目前我正在- (void)scrollViewDidScroll:(UIScrollView *)scrollView
方法中执行此操作。
if (scrollView.contentOffset.x == 160) {
//animate Image
}
但有时它会得到 160,但有时它会超过 160。我该如何解决这个问题?
我有一个滚动视图和一些图像。当滚动视图scrollView.contentOffset.x
超过某个 X 时,我上面的图像应该动画。
我知道如何制作动画。目前我正在- (void)scrollViewDidScroll:(UIScrollView *)scrollView
方法中执行此操作。
if (scrollView.contentOffset.x == 160) {
//animate Image
}
但有时它会得到 160,但有时它会超过 160。我该如何解决这个问题?
添加一个实例变量,将其设置为您在上次调用 时看到的偏移量scrollViewDidScroll:
,并使用它来决定是否要制作动画:
// Instance variable
CGPoint lastOffset;
...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
...
if (lastOffset.x < 160 && scrollView.contentOffset.x >= 160) {
//animate Image
}
lastOffset = scrollView.contentOffset;
}
这将让您在每次滚动视图从低于 160 到高于 160 时为图像设置动画。
使用>= 160
但也使用一个标志,这样你就知道你是否已经完成了动画:
if (scrollView.contentOffset.x == 160 && !self.animatedImage) {
self.animatedImage = YES;
...
}
我认为您应该添加一些标志以允许图像动画,并在滚动/图像动画后管理此标志
BOOL isCanAnimate_;
// some code here
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.x >= imageView.frame.size.width / 2 && isCanAnimate_)
{
isCanAnimate_ = FALSE;
[UIView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^
{
// Animation here
}
completion:^(BOOL finished)
{
isCanAnimate_ = TRUE;
}];
}
}