【问题标题】:Zoom simultaneously in two UIImageView同时放大两个 UIImageView
【发布时间】:2017-01-31 21:12:39
【问题描述】:

我需要有两个 UIImageView,都启用了缩放,(我可以使用典型的 UISCrollView 技术)并且每当我放大其中一个时,也会导致另一个放大,在同一点并使用相同的缩放。

这是一个解释性视频:https://youtu.be/Ft-Dt3fx3z8?t=29s

你知道有什么解决办法吗?

谢谢

【问题讨论】:

    标签: objective-c uiscrollview uiimageview uiscrollviewdelegate


    【解决方案1】:

    我会回答我自己的问题,第一个解决方案是异步缩放而不滚动

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        if (scrollView == _scrollView1)
            return self.imageView1;
        else
            return self.imageView2;
    }
    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
    {
        if (scrollView == _scrollView1){
            [_scrollView2 setZoomScale:scale animated:YES];
            [_scrollView2 setContentOffset:_scrollView1.contentOffset animated:YES];
        }
        else if (scrollView == _scrollView2){
            [_scrollView1 setZoomScale:scale animated:YES];
            [_scrollView1 setContentOffset:_scrollView2.contentOffset animated:YES];
        }
    }
    

    第二个更好的实时缩放和滚动解决方案(仍然需要 viewForZoomingInScrollView)

    - (void)matchScrollView:(UIScrollView *)first toScrollView:(UIScrollView *)second {
        CGPoint offset = first.contentOffset;
        offset.x = second.contentOffset.x;
        offset.y = second.contentOffset.y;
        [first setContentOffset:offset];
        [first setZoomScale:second.zoomScale];
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        if([scrollView isEqual:_scrollView1]) {
            [self matchScrollView:_scrollView2 toScrollView:_scrollView1];
        } else {
            [self matchScrollView:_scrollView1 toScrollView:_scrollView2];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多