第一次动画UIScrollView contentOffset没有动画

时间:2014-06-20 00:53:23

标签: ios objective-c uiscrollview uikit core-animation

我有一个UIScrollView(self.zoomScrollView),其中包含另一个UIView(self.pageView)。我正在使用

为zoomScale和contentOffset设置动画
CGPoint p1 = [tap locationInView:self.pageView];
CGPoint p2 = CGPointMake(p1.x * 3, p1.y * 3);
CGPoint d  = CGPointMake(p2.x - p1.x, p2.y - p1.y);
[UIView animateWithDuration:0.2
                      delay:0
                    options:UIViewAnimationOptionBeginFromCurrentState
                 animations:^{
                     [self zoomScrollView].zoomScale = 3;
                     [self.zoomScrollView setContentOffset:d animated:NO];
                 }
                 completion:^(BOOL finished) {
                 }];

第一次运行此动画时,contentOffset立即设置为其最终值,然后缩放zoomScale以满足它。之后每隔一段时间这个动画就完美无缺。关于为什么它第一次没有工作的任何想法?

1 个答案:

答案 0 :(得分:0)

zoomScalecontentOffset属性不可动画,因此在UView动画块中更改它们不起作用。要为contentOffset设置动画,只需将YES传递给setContentOffset:animated:,而无需使用动画块。同样适用于zoomScale(查看文档)。

动画属性: https://developer.apple.com/library/ios/documentation/windowsviews/conceptual/viewpg_iphoneos/animatingviews/animatingviews.html

UIScrollView中: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html#//apple_ref/occ/instm/UIScrollView/setZoomScale:animated