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

时间:2014-02-17 00:49:36

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

当用户放大我的UIScrollView时,我想隐藏无关的信息。现在,我正在scrollViewDidZoom委托方法中处理它,在每次缩放变化时都会调用它:

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

我的问题是,在那个hideExtraInformation:方法中,隐藏是将alpha输出动画。因为每次变焦都会调用此动画,动画会被触发一吨。如何制作动画以便仅在初始放大时调用动画,然后当它们恢复完全缩小时?

1 个答案:

答案 0 :(得分: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;
}
相关问题