ios - 通过 StoryBoard 在滚动视图中平移大图像
问题描述
我正在构建一个应用程序,我想显示一个平面图,其中图像为 2952x3600,大于我的视图控制器的大小。我希望用户能够平移图像并放大和缩小,类似于地图在 Mapview 中的行为方式。
我能够使用以下代码以编程方式获得所需的结果。但是,我希望能够向图像添加按钮,并且在情节提要中这样做会更容易。如何在情节提要中完成相同的结果?
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 中,您不能将子视图添加到 a UIImageView
,因此您需要将图像视图和按钮嵌入到 "容器" 中UIView
。然后在你的控制器类中container view
从viewForZooming
编辑
这是在 Storyboard / IB 中设置视图的示例:https ://github.com/DonMag/PDFImagePanZoom
推荐阅读
- c# - 从网络数据复制到逻辑数据或将数据作为类成员
- javascript - 编写此正则表达式的替代方法,因为它无法在 chrome 以外的其他浏览器中运行
- azure-sql-data-warehouse - 未找到 Azure 数据仓库 SELECT n'char' 列
- jquery - jQuery UI 滑块值更改时如何运行代码隐藏函数
- r - 使用 ggplot 将标签添加到具有比例的堆叠条形图
- python-3.x - 使用 sort_values 按最后一行对列进行排序时遇到问题
- javascript - 两个相互依赖的机器人命令
- activerecord - 如何使用 Rails 6 ActionText 持久化自定义属性
- linux - 是否可以抑制来自 docker 日志的特定消息?
- r - 有没有办法可以循环并加快速度