ios - 使用 uiscrollview 进行图像缩放无法正常工作。 swift

标签 ios swift image

我正在开发一个应用程序,用户可以在其中添加照片并对其进行编辑。当图像添加到imageView并缩放时,它工作正常,但是当我添加新图像时,scrollView的长度意外增加,并且在scrollView已编码的中间查看图像,但是scrollView尺寸增加。我必须滚动到中间才能查看图像。下面是我正在使用的代码。

 @IBAction func addPhotoTrigered(_ sender: Any) {
     addPhotoCall()
    }

    func addPhotoCall() {
        print("dsds")
        let image = UIImagePickerController()
        image.delegate = self
        image.sourceType = UIImagePickerControllerSourceType.photoLibrary
        image.allowsEditing = false
        self.present(image, animated: true) {
        }
    }
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        imagePic = info[UIImagePickerControllerOriginalImage] as? UIImage
           addImageView.isHidden = true
            imageView.image = imagePic
            newImageButton.isHidden = false
            photoStatus = true
            imageView.contentMode = UIViewContentMode.center
        imageView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: imagePic!.size.width, height: imagePic!.size.height))
        print(imageView.frame)
        scrollView.contentSize = imagePic!.size
        let scrollViewFrame = scrollView.frame
        let scrollWidth = scrollViewFrame.size.width / scrollView.contentSize.width
        let scrollHeight = scrollViewFrame.size.height / scrollView.contentSize.height
        let minScale = min(scrollHeight, scrollWidth)
        scrollView.minimumZoomScale = minScale
        scrollView.maximumZoomScale = 1.0
        scrollView.zoomScale = minScale
        centreScrollViewContent()
        self.dismiss(animated: true, completion: nil)

    }
    func centreScrollViewContent() {
        let boundSize = scrollView.bounds.size
        var contentFrame = imageView.frame
        if contentFrame.size.width < boundSize.width {
            contentFrame.origin.x = (boundSize.width - contentFrame.size.width) / 2
        } else {
            contentFrame.origin.x = 0
        }
        if contentFrame.size.height < boundSize.height {
            contentFrame.origin.y = (boundSize.height - contentFrame.size.height) / 2
        } else {
            contentFrame.origin.y = 0
        }
        imageView.frame = contentFrame
    }


    func scrollViewDidZoom(_ scrollView: UIScrollView) {
        centreScrollViewContent()
    }
    func viewForZooming(in scrollView: UIScrollView) -> UIView? {

        return imageView
    }
@IBAction func newImageTrigered(_ sender: Any) {
    imageView.image = nil
    addImageView.isHidden = false
    newImageButton.isHidden = true
}

请修复代码。我尝试了很多方法,但无法理解为什么会发生这种情况。

最佳答案

从 ScrollView 中创建一个导出并放置委托(delegate) self 并将 uiscrollViewDelegate 添加到 View Controller ,然后它应该可以工作 我有一个示例代码

class ViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.delegate = self
    updateZoomFor(size: scrollView.bounds.size)
}

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return imageView
}

func updateZoomFor(size: CGSize) {
    let widthScale = size.width / imageView.bounds.width
    let heightScale = size.height / imageView.bounds.height
    let scale = min(widthScale, heightScale)
    scrollView.minimumZoomScale = scale
    scrollView.maximumZoomScale = 5
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

关于ios - 使用 uiscrollview 进行图像缩放无法正常工作。 swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191157/

相关文章:

html - 如何在链接后放置图片?

ios - swift : Segue(modal) to a UITableViewController which embeded in antoher navigation controller

ios - 在 WKWebView 中加载本地文件在设备中不起作用

ios - 关闭应用程序并再次打开,然后 PopToRootViewController 无法在 swift firebase 中工作

javascript - 我可以从 img 标签将图像上传到 firebase 存储吗

HTML/CSS - 从容器的右侧定位标签,到另一个标签的右侧

ios - 如何在 Xcode 中将商品添加到 Outlet Collection

ios - 如果完成处理程序完成则为真

ios - UIImage View 不在强制景观上旋转

swift - 比较 Swift 中的 AnyObjects 而不是将它们转换为特定类型