ios - Swift :- 如何在 Swift 中的 UIScrollview 内向 UIImageview 添加偏移量?
问题描述
在我的 iOS 应用程序中,我有一个滚动视图,其中包含用于滚动和缩放图像的图像视图。我无法做的是使用预定义的偏移量和缩放值启动图像视图。现在,在启动时,会显示原始图像,我可以放大/缩小和滚动,但我想用默认值的偏移量放大/缩小。
在设置时scrollview.zoomScale
,我无法完全滚动图像。下面的代码: -
let scroller = UIScrollView()
scroller.translatesAutoresizingMaskIntoConstraints = false
scroller.minimumZoomScale = 1
scroller.maximumZoomScale = 5
return scroller
}()
let imageView: UIImageView = {
let iv = UIImageView()
iv.contentMode = .scaleAspectFit
iv.translatesAutoresizingMaskIntoConstraints = false
return iv
}()
解决方案
第一步:
scrollView = UIScrollView(frame: view.bounds)
view.addSubview(scrollView)
imageView.center = view.center
scrollView.addSubview(imageView)
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 2.0
scrollView.delegate = self
第二步:实现 UIScrollViewDelegate 方法
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
最后:
private func setImagePosition(_ image: UIImage) {
imageView.image = image
let size = imageSize(WithScreen: image)
imageView.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)
scrollView?.contentSize = size
if let scrollView = scrollView, size.height < scrollView.bounds.size.height {
let offsetY = (scrollView.bounds.size.height - size.height) * 0.5
scrollView.contentInset = UIEdgeInsets(top: offsetY, left: 0, bottom: offsetY, right: 0)
}
}
private func imageSize(WithScreen image: UIImage) -> CGSize {
var size = UIScreen.main.bounds.size
size.height = image.size.height * size.width / image.size.width
return size
}
推荐阅读
- c# - 如何使用 plink 替换 linux 服务器中 .config 文件中的标签值
- javascript - 开玩笑错误:未捕获 [TypeError:XXX 不是函数]
- mongodb - 我们如何过滤子文档 mongodb?
- jquery - 试图弄清楚如何将我的错误响应定位为使用来自内置 Python api 的 AJAX jQuery 在输入 div 中显示
- python - 从数据框中删除行时出现误报
- node.js - 如何加快 node.js 中的多个请求?
- algorithm - 动态编程:带有记忆的递归是否可以与任何递归解决方案或仅特定格式的解决方案一起使用?
- css - 错过css文件/模块未发现反应问题
- android - 如何以编程方式单击另一个android应用程序上的按钮
- javascript - 2个数组之间的Js不同