微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在滚动视图中无法缩小图片

如何解决在滚动视图中无法缩小图片

我正在尝试进行图像预览,但是在ViewOnlyImageVC中查看图像时无法缩小图像

使用翠鸟从在线存储中检索图像,然后将其作为参数传递给ViewOnlyImageVC中的fullScreenImageView。

一个视图控制器中的检索器功能

let selectimageVC = ViewOnlyImageVC()
       let imageView = UIImageView().kf.setimage(with: URL(string: passedCallDetails.Call_Captured_Images[index]),placeholder: nil,options: nil,progressBlock: nil) { (image) in
            switch image{
            case .success(let result):
                selectimageVC.fullScreenImageView.image = result.image
                self.navigationController?.pushViewController(selectimageVC,animated: true)
            case .failure(let error):
                self.presentAlert(withTitle: "App name",message: error.localizedDescription)
            }
        }

图像预览VC代码

class ViewOnlyImageVC : UIViewController,uiscrollviewdelegate {
    
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    
    override var prefeRSStatusBarHidden: Bool {
        return true
    }
    
    var navigationBar = NavigationBarView()
    
    lazy var backBtn        : ArrowBackButton   = ArrowBackButton()

    var imageScrollView : UIScrollView = {
        let scrollImg = UIScrollView(frame:.zero)
        scrollImg.translatesAutoresizingMaskIntoConstraints = false
        return scrollImg
    }()
    
    var fullScreenImageView : UIImageView = {
        let image = UIImageView(frame:.zero)
        image.translatesAutoresizingMaskIntoConstraints = false
        image.isUserInteractionEnabled = true
        return image
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
    }
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        updateMinZoomScaleForSize(view.bounds.size)
    }
}


//MARK: Button actions
extension ViewOnlyImageVC{
    
    @objc func dismisspopup(sender: UIButton){
        self.navigationController?.popViewController(animated: true)
    }
}

//MARK: setup UI
extension ViewOnlyImageVC{
    
    func setupUI(){
        
        imageScrollView.delegate = self
        fullScreenImageView.contentMode = .center
        view.addSubview(navigationBar)
        navigationBar.addSubview(backBtn)
        view.backgroundColor = .white
        backBtn.addTarget(self,action: #selector(dismisspopup(sender:)),for: .touchUpInside)
        view.addSubview(imageScrollView)
        imageScrollView.addSubview(fullScreenImageView)
        
        NSLayoutConstraint.activate([
            navigationBar.leftAnchor.constraint(equalTo: self.view.leftAnchor),navigationBar.rightAnchor.constraint(equalTo: self.view.rightAnchor),navigationBar.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),navigationBar.heightAnchor.constraint(equalToConstant: UIScreen.main.bounds.height * 0.1)
        ])
        NSLayoutConstraint.activate([
            backBtn.centerYAnchor.constraint(equalTo: navigationBar.centerYAnchor),backBtn.leftAnchor.constraint(equalTo: navigationBar.leftAnchor,constant: 20)
        ])
        NSLayoutConstraint.activate([
            imageScrollView.topAnchor.constraint(equalTo: navigationBar.bottomAnchor),imageScrollView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),imageScrollView.leftAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leftAnchor),imageScrollView.rightAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.rightAnchor)
        ])
        NSLayoutConstraint.activate([
            fullScreenImageView.topAnchor.constraint(equalTo: imageScrollView.topAnchor),fullScreenImageView.bottomAnchor.constraint(equalTo: imageScrollView.bottomAnchor),fullScreenImageView.leftAnchor.constraint(equalTo: imageScrollView.leftAnchor),fullScreenImageView.rightAnchor.constraint(equalTo: imageScrollView.rightAnchor),])
    }
    
    func updateMinZoomScaleForSize(_ size: CGSize){
        
        let scaleWidth = size.width / (fullScreenImageView.image?.size.width ?? 0)
        let scaleHeight = size.height / (fullScreenImageView.image?.size.height ?? 0)
        let minScale = min(scaleHeight,scaleWidth)
        imageScrollView.minimumZoomScale = minScale
        imageScrollView.zoomScale = minScale
    }
    
    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
        return fullScreenImageView
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?