【问题标题】:check if scrollview.contentset went over certain x value检查 scrollview.contentset 是否超过了某个 x 值
【发布时间】:2013-05-05 07:54:23
【问题描述】:

我有一个滚动视图和一些图像。当滚动视图 scrollView.contentOffset.x 超过某个 X 时,我上面的图像应该动画。

我知道如何制作动画。目前我正在- (void)scrollViewDidScroll:(UIScrollView *)scrollView 方法中执行此操作。

if (scrollView.contentOffset.x == 160) {
 //animate Image
}

但有时它会得到 160,但有时它会超过 160。我该如何解决这个问题?

【问题讨论】:

    标签: iphone ios objective-c uiscrollview uiscrollviewdelegate


    【解决方案1】:

    添加一个实例变量,将其设置为您在上次调用 scrollViewDidScroll: 时看到的偏移量,并使用它来决定您是否要制作动画:

    // Instance variable
    CGPoint lastOffset;
    ...
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        ...
        if (lastOffset.x < 160 && scrollView.contentOffset.x >= 160) {
            //animate Image
        }
        lastOffset = scrollView.contentOffset;
    }
    

    这可以让您在每次滚动视图从低于 160 到高于 160 时为图像设置动画。

    【讨论】:

      【解决方案2】:

      使用&gt;= 160,但也使用一个标志,这样你就知道你是否已经完成了动画:

      if (scrollView.contentOffset.x == 160 && !self.animatedImage) {
          self.animatedImage = YES;
          ...
      }
      

      【讨论】:

        【解决方案3】:

        我认为你应该添加一些标志来允许图像动画, 并在滚动/图像动画后管理此标志

        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;
                 }];
             }
        }    
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-23
          • 1970-01-01
          • 1970-01-01
          • 2016-08-24
          • 2022-01-05
          • 2021-09-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多