2017-07-18 49 views
4

现在我有以下看法层次:如何使用滚动视图进行缩放时,图像视图总是以屏幕为中心?

  • 查看
    • 滚动查看
      • 容器秤查看
        • 容器旋转视图
          • 地图图片浏览
            • 箭头图片浏览

我的看法层次结构有点复杂,因为我需要的规模和旋转的,也是我需要保持地图和箭头的位置关系,我一直在努力寻找这个解决方案。

现在我的问题是如何保持Arrow Image View总是在屏幕中心,当我缩放?

下面是我的一些代码:

func viewForZooming(in scrollView: UIScrollView) -> UIView? { 
    return Container For Scale View 
} 

func scrollViewDidZoom(_ scrollView: UIScrollView) { 
    let imageViewSize = MapImageView.frame.size 
    let scrollViewSize = scrollView.bounds.size 

    let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height)/2 : 0 
    let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width)/2 : 0 

    scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding) 
} 

回答

2

在这里,你需要一些数学

当你的规模容器的观点是较大的,按您的变焦倍数则需要相对超UIView

center点转换

可以说你的Container For Scale视图是viewBase

 var center = self.view.center 

之后转换您的图像点相同

  let convertedImagePoint = self.viewBase.convert(imageView.center, to: self.view) 

现在得到Difff

 let diff = convertedImagePoint.y - center.y 


     DispatchQueue.main.async { 
      self.scrollView1.contentOffset.y += diff 
     } 

希望这有助于

+0

谢谢!!它确实有帮助。 – ioio007

相关问题