2017-07-18 46 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

相關問題