当用户放大 UIScrollView 时如何隐藏某些内容,然后在缩小时显示它?

Posted

技术标签:

【中文标题】当用户放大 UIScrollView 时如何隐藏某些内容,然后在缩小时显示它?【英文标题】:How do I hide something when the user zooms into a UIScrollView, then show it when they zoom out? 【发布时间】: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 动画化。由于每次缩放更改都会调用此方法,因此动画会被触发很多。如何使动画仅在初始放大时调用,然后在它们完全缩小时调用?

【问题讨论】:

【参考方案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;

【讨论】:

存储可见性状态会更容易。 ;-)

以上是关于当用户放大 UIScrollView 时如何隐藏某些内容,然后在缩小时显示它?的主要内容,如果未能解决你的问题,请参考以下文章

当用户触摸 uiscrollview 时隐藏表格

如何在图像放大时隐藏背景

放大时只允许 UIScrollView 缩放弹跳,不能缩小

UIScrollView 中的 UItextfield 并用放大镜移动光标

如何使用 UIScrollView 捕捉缩放?

放大时,UIScrollview 调用 scrollViewDidEndDecelerating - 如何停止它?