gpt4 book ai didi

ios - 使用 ScrollView 缩放时如何使 ImageView 始终位于屏幕中心?

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:40 25 4
gpt4 key购买 nike

现在我有以下 View 层次结构:

  • 查看
    • ScrollView
      • 比例 View 容器
        • 旋转 View 的容器
          • map ImageView
            • 箭头 ImageView

我的 View 层次结构有点复杂,因为我需要缩放和旋转,而且我还需要保持 map 和箭头的位置关系,我已经研究了很长时间并找到了这个解决方案。

现在我的问题是如何在缩放时让 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)
}

最佳答案

这里你需要一些数学

由于您的缩放容器 View 根据您的缩放比例较大,您需要转换 center 点相对于 super UIView

假设您的比例 View 容器是 viewBase

        var center = self.view.center

在那之后转换你的图像点相同

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

现在获取差异

        let diff = convertedImagePoint.y - center.y


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

希望对你有帮助

关于ios - 使用 ScrollView 缩放时如何使 ImageView 始终位于屏幕中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45157365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com