【问题标题】:Swift - Mapping invisible button on UIImage which zoom In/OutSwift - 映射 UIImage 上放大/缩小的不可见按钮
【发布时间】:2018-06-12 19:56:48
【问题描述】:

有人可以建议最好的方法吗..

在下图中

  • 为地图的每个部分在图像上添加不可见按钮。
  • 图像应在滚动视图中以放大和缩小图像。
  • 放大/缩小不应改变按钮映射区域
  • 应该支持所有 iPhone 型号。

我做了什么..

在 UIScrollView 中添加了 UIImageView(用于放大/缩小),并在 viewDidAppear() 上手动为 UIImage 添加了不可见按钮,如下所示。

self.image.frame = CGRect(x: xValue , y:yValue, width: 60, height: 60)

有没有更好的方法来查找 UIImage 坐标?

【问题讨论】:

  • 在您提供的屏幕截图中,这些是多个按钮吗?请更清楚地解释您的要求。
  • 这是一张图片。我需要在每张图片上添加隐形按钮,即使我们放大/缩小,也应该保持图片的纵横比。
  • 为什么不给 uIimageview 添加点击手势?
  • 如果是collectionview则使用collectionview的didSeelectItemAtIndexPath delegate
  • 它是 UIScrollView 内的 UIImageView,我需要在每个块上添加 9 个不可见按钮。当我放大或缩小时,隐形按钮应保持比例。

标签: ios swift uiimageview uiimage mapping


【解决方案1】:

你在使用九个 imageViews 吗?不,这似乎不正确。

试试这样:

  1. 采用集合视图并提供必要的约束,例如顶部、底部、左侧和右侧。
  2. 将图像视图添加到集合视图单元格。添加角半径属性(您的图像视图似乎需要这个)。
  3. 对于放大和缩小操作,将捏合手势添加到集合视图。
  4. 为图像视图添加点击手势,而不是按钮。

【讨论】:

  • 这只是一个示例图像,我正在使用不同的图像,例如平面图。所以不能使用 UICollectionView。因此,如果您有映射图像坐标的解决方案,请告诉我
  • 这个答案中的集合视图有什么意义?它是用来做什么的?它似乎没有明显的原因被使用。
  • 一开始我添加了一个令人困惑的图像,这就是为什么他讲述了集合视图。我的坏:(。
【解决方案2】:

聚会很晚,但这应该可行:

ViewDidLoad 中添加:

    scrollView.minimumZoomScale = 0.5
    scrollView.maximumZoomScale = 6.0
    scrollView.contentSize = self.imageView.frame.size
    scrollView.delegate = self

ViewDidLoad之后添加:

// MARK: - Update the minimum zoom scale each time the controller updates its subviews
override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    updateMinZoomScaleForSize(view.bounds.size)
}

然后创建一个文件私有函数来计算scrollView的缩放比例

fileprivate func updateMinZoomScaleForSize(_ size: CGSize) {
    let widthScale = size.width / imageView.bounds.width
    let heightScale = size.height / imageView.bounds.height
    let minScale = min(widthScale, heightScale)

    imageScrollView.minimumZoomScale = minScale
    imageScrollView.zoomScale = minScale
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-25
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多