繁体   English   中英

Swift图像不适合滚动视图

[英]Swift image do not fit in the scrollview

我有一个滚动视图,可以加载图像进行放大和缩小,问题是我希望图像像这样完全加载

http://www.capital.cl/wp-content/uploads/2015/04/avengers.jpg

因此用户可以先看到完整的图像

但看起来像这样

IosEmulator

这是代码

导入UIKit

Paso2类:UIViewController,UIScrollViewDelegate {

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var noCheckBox2: CheckBox!
@IBOutlet weak var siCheckBox2: CheckBox!

var imageView = UIImageView()

override func viewDidLoad() {
    super.viewDidLoad()


    scrollView.delegate = self

    // imageView.contentMode = UIViewContentMode.ScaleAspectFill
    // imageView.clipsToBounds = true
    imageView.image = UIImage(named: "avengers.jpg")

    let imagee = UIImage(named: "avengers.jpg")
    let size = imagee?.size


    imageView.frame = CGRectMake(0, 0, size!.width, size!.height)
    imageView.contentMode = .Top
    scrollView.addSubview(imageView)

    scrollView.contentSize = size!
    let scrollViewFrame = scrollView.frame
    let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width
    let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height
    let minScale = min(scaleHeight, scaleWidth)

    scrollView.minimumZoomScale = 1
    scrollView.maximumZoomScale = 4
    scrollView.zoomScale = minScale

    centerScrollViewContents()

}



func centerScrollViewContents(){
    let boundsSize = scrollView.bounds.size
    var contentsFrame = imageView.frame

    if contentsFrame.size.width < boundsSize.width {
        contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width) / 2
    }
    else {
        contentsFrame.origin.x = 0
    }

    if contentsFrame.size.height < boundsSize.height {
        contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height) / 2
    }
    else {
        contentsFrame.origin.y = 0
    }

    imageView.frame = contentsFrame
    // scrollView.frame = contentsFrame
}

func scrollViewDidZoom(scrollView: UIScrollView) {
    centerScrollViewContents()
}

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

帮助PLZ

您应该使用UIImageView .contentMode属性来正确表示图像。

这是内容模式的较小比较。 在此处输入图片说明

只是改变这个。

        imageView.contentMode = .ScaleAspectFit

没有变焦

在此处输入图片说明 在此处输入图片说明

变焦

您要不滚动显示完整图像还是要显示可滚动图像?

尝试以下代码以快速启动:

class ViewController: UIViewController {

@IBOutlet weak var scrollView: UIScrollView!
var imageView = UIImageView()

private var imageViewOriginalSize = CGRect ()

override func viewDidLoad() {
    super.viewDidLoad()


    imageView.image = UIImage(named: "avengers.jpg")
    imageView.contentMode = .ScaleAspectFit
    let size = UIScreen.mainScreen().bounds
    imageViewOriginalSize = size
    imageView.frame = CGRectMake(0, 0, size.width, size.height)
    scrollView.addSubview(imageView)

    let pinch = UIPinchGestureRecognizer(target: self, action: #selector(ViewController.pinchGestureRecognizerAction))
    self.scrollView.addGestureRecognizer(pinch)

}

func pinchGestureRecognizerAction(gestureRecoginzer: UIPinchGestureRecognizer) {
    imageView.frame.size.height = imageViewOriginalSize.height*gestureRecoginzer.scale
    imageView.frame.size.width = imageViewOriginalSize.width*gestureRecoginzer.scale
    imageView.frame.origin.x = imageViewOriginalSize.origin.x*gestureRecoginzer.scale
    imageView.frame.origin.y = imageViewOriginalSize.origin.y*gestureRecoginzer.scale
    scrollView.contentSize = imageView.frame.size
}}

暂无
暂无

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

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