【问题标题】:Xcode 8/ Swift 3 - How can I lock button constraints to a pinch to zoom image so they zoom in and out with the image?Xcode 8/Swift 3 - 如何将按钮约束锁定为捏合以缩放图像,以便它们随图像一起放大和缩小?
【发布时间】:2017-03-04 23:47:47
【问题描述】:

我有一个带有滚动视图的视图控制器,然后是视图内的类似地图的图像。在地图图像的顶部,我有 16 个不同的 pin 按钮指向地图图像上的不同部分。到目前为止,我可以放大和缩小地图,但 16 个按钮没有跟随并分散。如何将按钮附加或锁定到地图图像上,以便它们随地图放大和缩小。到目前为止,在我的地图视图控制器中,我有这个:(提前感谢您的回答!)

import UIKit

class MapppViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var mainScrollView: UIScrollView!
@IBOutlet weak var mapImageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.mainScrollView.minimumZoomScale = 1.0
    self.mainScrollView.maximumZoomScale = 5.0
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func viewForZooming(in scrollView: UIScrollView ) -> UIView?
{
    return self.mapImageView

【问题讨论】:

  • "在地图图像之上" 但它们不是子视图?这些是什么?显示 pin 按钮如何到达那里。
  • 我是 xcode 的新手,所以我不确定你的意思?这是我所拥有的照片:i68.tinypic.com/2lxwoeo.png
  • 对,这些不是地图图像视图的子视图。如果您将它们设为子视图,它们将在地图缩放时相对于地图保持静止(尽管默认情况下它们会随着地图的缩放而增长/缩小;但是,您可以更改它)。
  • 还有一张 gif 图像,说明我的问题是我无法弄清楚如何在放大时锁定地图上的按钮以进行移动:gifyu.com/image/SF0W
  • 如果它像你所说的“子视图”那么简单,我会怎么做呢?你有关于如何做的链接或视频吗?感谢您的帮助!

标签: ios iphone swift xcode swift3


【解决方案1】:

粗略地说,我想这就是你所追求的:

您可以通过制作图像视图的按钮子视图或(就像我在这里所做的那样)通过制作按钮和图像视图子视图来实现这一点,“容器视图”除了作为可缩放子视图之外没有其他用途滚动视图。

这是我的视图层次结构:

这是唯一的代码:

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet weak var sv: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.sv.minimumZoomScale = 1
        self.sv.maximumZoomScale = 2
    }

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return scrollView.viewWithTag(999) // the container view
    }

}

【讨论】:

  • 非常感谢@matt 这正是我正在寻找的东西,但在互联网上的任何地方都找不到。我真的很感谢你在这方面的帮助!你真棒!
  • 嘿@matt 另一个问题。完成上述操作后,约束按钮的最佳方法是什么,以便在不同设备上按钮保持锁定在地图上的位置?放大和缩小我在(iPhone 7)上制作的设备时效果很好,但在其他设备上我不知道如何添加变成蓝色的约束。我看过谷歌,但每个页面/教程显示约束都没有我拥有的层次结构/设置类型。提前致谢。我是新手……
  • 最简单的是 no 约束。只要每个设备上的地图大小相同,按钮就会位于正确的位置。否则,您必须根据图像大小 (multiplier) 的 百分比 计算顶部/左侧按钮,以使它们位于地图本身的同一位置。
  • 嘿@matt 关于你上面的层次结构的例子,你会施加什么约束来保持地图的位置?约束是什么?我觉得我已经尝试了所有类型的约束,但无法让它发挥作用
  • 我已经完成了我正在做的地图应用程序。你能帮帮我吗?我的地图上的按钮可以在除 ipad 之外的所有设备上工作。按钮只是分散并且不在正确的位置。这是问题的 gif。 (我的电脑有点慢所以给它时间加载)gifyu.com/image/SYrt
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多