ios - 首次缩放时捏放大不起作用 - ios
问题描述
我将 UIImageView 作为 UIScrollView 的子视图。
let newImageView = UIImageView(image: imageView.image)
newImageView.contentMode = .scaleAspectFit
newImageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dismissFullscreenImage))
newImageView.addGestureRecognizer(tap)
scrollPinch = UIScrollView()
scrollPinch.frame = UIScreen.main.bounds
scrollPinch.isUserInteractionEnabled = true
scrollPinch.minimumZoomScale = 1.0
scrollPinch.maximumZoomScale = 6.0
scrollPinch.delegate = self
scrollPinch.clipsToBounds = true
newImageView.frame = scrollPinch.bounds
self.view.addSubview(self.scrollPinch)
self.scrollPinch.addSubview(newImageView)
像这样。(* scrollPinch 在这个 ViewController 类的方法之外被声明为 var scrollPinch: UIScrollView!) 然后,在委托方法中,
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
if (scrollView == scrollPinch){
if (scrollView.subviews[0].isKind(of: UIImageView.self)){
return scrollView.subviews[0]
}
}
return nil
}
现在,我首先尝试放大,imageView 向右移动而不是放大。但是,在我放开 imageView 并尝试再次放大后,它工作得很好。
任何想法如何解决这个问题?
解决方案
原来我应该做的
self.scrollPinch.addSubview(newImageView)
self.view.addSubview(self.scrollPinch)
代替
self.view.addSubview(self.scrollPinch)
self.scrollPinch.addSubview(newImageView)
在我交换这两行之后,一切都解决了。
推荐阅读
- youtube - 为什么频道管理员不能上传或编辑视频以对域私有?
- node.js - 如何解决 cors 起源异常
- java - 这是从 android 的 Firebase 数据库中以小块加载数据的正确方法吗?
- flutter - 我们可以在 Flutter 应用中添加开放遥测吗?
- php - 是否可以为通过 php-fpm/cgi-fgci 运行的 php 脚本提供 cli 参数
- c# - 具有代理和继承层次结构的 protobuf-net v3
- python-3.x - 卷积层 - 可训练的权重 TensorFlow2
- ruby - 如何在 httparty ruby 中使用 api 密钥获取 api 数据
- kubernetes - 入口随机给出 502 Bad Gateway Error
- php - 过渡到像 article/show?id=1 这样的细节