通过故事板在滚动视图中平移大图像
Pan Large Image in Scrollview through StoryBoard
我正在构建一个应用程序,我想在其中显示图像为 2952x3600 的平面图,大于我的视图控制器的大小。我希望用户能够平移图像并放大和缩小,类似于地图在 Mapview 中的行为方式。
我能够使用以下代码以编程方式获得所需的结果。但是,我希望能够向图像添加按钮,并且在情节提要中更容易做到。我怎样才能在 Storyboard 中实现相同的结果?
class ViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imageView = UIImageView(image: UIImage(named: "TorontoPATHNetworkMap_v.2018.08.pdf"))
scrollView = UIScrollView(frame: view.bounds)
scrollView.contentSize = imageView.bounds.size
scrollView.addSubview(imageView)
scrollView.delegate = self
scrollView.minimumZoomScale = 0.3
scrollView.maximumZoomScale = 5
view.addSubview(scrollView)
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
}
如果您想添加其他 UI 元素(按钮、标签、子视图等)并让它们在滚动视图内容缩放时缩放和移动,您有几个选择:
1) 在代码中添加您的按钮作为图像视图的子视图。它们将随着图像视图移动/调整大小。
2) 如果您发现以视觉方式布置按钮更容易,则可以在 Storyboard / Interface Builder 中进行布置。但是,在 IB 中,您不能将子视图添加到 UIImageView
,因此您需要将图像视图和按钮嵌入到 "container" UIView
。然后在你的控制器 class return 中 container view
来自 viewForZooming
编辑
下面是在故事板/IB 中设置视图的示例:https://github.com/DonMag/PDFImagePanZoom
我正在构建一个应用程序,我想在其中显示图像为 2952x3600 的平面图,大于我的视图控制器的大小。我希望用户能够平移图像并放大和缩小,类似于地图在 Mapview 中的行为方式。
我能够使用以下代码以编程方式获得所需的结果。但是,我希望能够向图像添加按钮,并且在情节提要中更容易做到。我怎样才能在 Storyboard 中实现相同的结果?
class ViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imageView = UIImageView(image: UIImage(named: "TorontoPATHNetworkMap_v.2018.08.pdf"))
scrollView = UIScrollView(frame: view.bounds)
scrollView.contentSize = imageView.bounds.size
scrollView.addSubview(imageView)
scrollView.delegate = self
scrollView.minimumZoomScale = 0.3
scrollView.maximumZoomScale = 5
view.addSubview(scrollView)
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
}
如果您想添加其他 UI 元素(按钮、标签、子视图等)并让它们在滚动视图内容缩放时缩放和移动,您有几个选择:
1) 在代码中添加您的按钮作为图像视图的子视图。它们将随着图像视图移动/调整大小。
2) 如果您发现以视觉方式布置按钮更容易,则可以在 Storyboard / Interface Builder 中进行布置。但是,在 IB 中,您不能将子视图添加到 UIImageView
,因此您需要将图像视图和按钮嵌入到 "container" UIView
。然后在你的控制器 class return 中 container view
来自 viewForZooming
编辑
下面是在故事板/IB 中设置视图的示例:https://github.com/DonMag/PDFImagePanZoom