How to make image view always be center of screen when scale using scroll view?

Viewed 712

Now I have following view hierarchy:

  • View
    • Scroll View
      • Container For Scale View
        • Container For Rotate View
          • Map Image View
            • Arrow Image View

My view hierarchy is a little complicated since I need both scale and rotate, and also I need to keep the relationship of position of map and arrow, I have been working around for a long time and find this solution.

Now My question is how to keep Arrow Image View always in center of screen when I scale?

Here is some of my code:

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)
}
1 Answers
Related