【问题标题】:How do I hide something when the user zooms into a UIScrollView, then show it when they zoom out?当用户放大 UIScrollView 时如何隐藏某些内容,然后在缩小时显示它?
【发布时间】:2014-02-17 00:49:35
【问题描述】:

当用户放大我的 UIScrollView 时,我想隐藏无关信息。现在,我在 scrollViewDidZoom 委托方法中处理这个问题,该方法在每次缩放更改时都会被调用:

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    if (scrollView.zoomScale > scrollView.minimumZoomScale) {
        [self hideExtraInformation:YES];
    }
    else {
        [self hideExtraInformation:NO];
    }

我的问题是,在那个hideExtraInformation: 方法中,隐藏正在使alpha 动画化。由于每次缩放更改都会调用此方法,因此动画会被触发很多。如何使动画仅在初始放大时调用,然后在它们完全缩小时调用?

【问题讨论】:

    标签: ios objective-c cocoa-touch uiview uiscrollview


    【解决方案1】:

    您可以将currentZoomScale 属性添加到您的班级并使用它来确定是否需要工作

    - (void)scrollViewDidZoom:(UIScrollView *)scrollView
    {
      BOOL isZooming         = scrollView.zoomScale  > scrollView.minimumZoomScale;
      BOOL isCurrentlyZoomed = self.currentZoomScale > scrollView.minimumZoomScale;
    
      if (isCurrentlyZoomed) {
        if (!isZooming) {
          [self hideExtraInformation:NO];
        }
      } else {
        if (isZooming) {
          [self hideExtraInformation:YES];
        }
      }
    
      self.currentZoomScale = scrollView.zoomScale;
    }
    

    【讨论】:

    • 存储可见性状态会更容易。 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2017-04-17
    • 1970-01-01
    相关资源
    最近更新 更多