简体   繁体   English

如何在Swift中通过图像大小调整UIImageView的大小

[英]How to resize UIImageView by image size in Swift

I want to increase the image using the zoom. 我想使用变焦增加图像。 I did this and did that would be equal to the size of the type size of the image but I still background with top like this change? 我这样做了,是否等于图像的字号大小,但是我仍然像上面这样改变背景呢? How can I make it? 我该怎么做?

My imageView in viewDidLoad 我的imageView在viewDidLoad中

    imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
    imageView.backgroundColor = .greenColor()
    imageView.image = UIImage(contentsOfFile: document.documentImageURL)
    imageView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] //


   func setZoomScale() {
    let widthRatio = imageView.bounds.size.width / (imageView.image?.size.width)!
    let heightRatio = imageView.bounds.size.height / (imageView.image?.size.height)!
    let scale = min(widthRatio, heightRatio)
    let imageWidth = scale * (imageView.image?.size.width)!
    let imageHeight = scale * (imageView.image?.size.height)!
    imageView.frame = CGRect(x: 0, y: 0, width: imageWidth, height: imageHeight)
}

在此处输入图片说明

I made like that 我那样做

    override func viewDidLoad() {
    super.viewDidLoad()

    let image = UIImage(contentsOfFile: document.documentImageURL)
    imageView = UIImageView(image: image)
    imageView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]

    scrollView = UIScrollView(frame: view.bounds)
    scrollView.delegate = self
    scrollView.backgroundColor = UIColor(red: 129/255.0, green: 130/255.0, blue: 130/255.0, alpha: 1.0)
    scrollView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
    scrollView.showsHorizontalScrollIndicator = false
    scrollView.showsVerticalScrollIndicator = false
    scrollView.addSubview(imageView)
    view.addSubview(scrollView)
    newZoomScale()
    scrollView.setZoomScale(scrollView.minimumZoomScale, animated: false)
    setGesture()
    setNavigationBar()
}

private func newZoomScale() {
    let imageViewSize = imageView.bounds.size
    let scrollViewSize = scrollView.bounds.size
    let widthScale = scrollViewSize.width / imageViewSize.width
    let heightScale = scrollViewSize.height / imageViewSize.height
    scrollView.minimumZoomScale = min(widthScale, heightScale)
    scrollView.zoomScale = 1.0
}

func scrollViewDidZoom(scrollView: UIScrollView) {
        let imageViewSize = imageView.frame.size
        let scrollViewSize = scrollView.bounds.size

        let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height) / 2 : 0
        let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width) / 2 : 0

        self.scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding)
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM