无法缩放UIScrollView中的图像

问题描述:

我一直坚持了几个小时。我只需要一个ScrollView中的ImageView。我想要将contentMode设置为方向填充,以便图像每次都填充ImageView。我也希望用户能够缩放和平移图像。这里是我的代码:无法缩放UIScrollView中的图像

import UIKit 

class ViewController: UIViewController, UIScrollViewDelegate { 

var scrollView: UIScrollView! 
var imageView: UIImageView! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    let image = UIImage(named: "fish")! 

    imageView = UIImageView(image: image) 
    imageView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size:image.size) 
    imageView.contentMode = .scaleAspectFill 

    scrollView = UIScrollView(frame: view.bounds) 
    scrollView.backgroundColor = UIColor.black 
    scrollView.contentSize = imageView.bounds.size 

    scrollView.delegate = self 

    scrollView.minimumZoomScale = 0.1 
    scrollView.maximumZoomScale = 4.0 
    scrollView.zoomScale = 1.0 

    scrollView.addSubview(imageView) 
    view.addSubview(scrollView) 

} 

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

} 

首先我不能放大或缩小,不明白为什么。我设置代表,实施viewForZoomingInScrollView并设置最大ZoomScale从我读的是要求缩放工作。

其次,图像没有看点适合屏幕。内容模式设置似乎没有影响任何东西,因为当我将它设置为.scaleToFill时,图像不会挤入屏幕中,我可以平移它。

图片小于屏幕: http://i.imgur.com/eEuy0En.png

原件: http://i.imgur.com/1cH4rrk.png

原件:: http://i.imgur.com/ThNhapb.jpg

越小图像应该方面填充 http://i.imgur.com/GtkKWKu.jpg

图片大于屏幕屏幕,但它不和和在这两种情况下缩放都不起作用。我只能围绕更大的图像。

+0

请检查我的回答 –

你的问题是在UIScrollViewDelegate方法错字

应该

func viewForZooming(in scrollView: UIScrollView) -> UIView? 

希望这有助于你

+0

谢谢,这个固定的缩放的问题。 AspectFill仍然不工作寿:/ – MHCsk

+0

我认为你应该使用'imageView.contentMode = .scaleAspectFit'而不是'imageView.contentMode = .scaleAspectFill' –

请试试这个:

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

    func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) { 
     self.scrollView.flashScrollIndicators() 
    } 

创建两个出口:---

 @IBOutlet weak var scrollView: UIScrollView! 
     @IBOutlet weak var imgPhoto: UIImageView! 
     override func viewDidLoad() { 
     super.viewDidLoad() 
      scrollView.minimumZoomScale = 1.0 
      scrollView.maximumZoomScale = 6.0 
     } 

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

    return imgPhoto 
} 

否则您的代码

  let image = UIImage(named: "fish")! 

     imageView = UIImageView(image: image) 
     imageView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size:image.size) 
     //  imageView.contentMode = .scaleAspectFill 
     //   
     scrollView = UIScrollView(frame: view.bounds) 
     //  scrollView.backgroundColor = UIColor.black 
     //  scrollView.contentSize = imageView.bounds.size 

      scrollView.delegate = self 

     scrollView.minimumZoomScale = 0.1 
     scrollView.maximumZoomScale = 4.0 
     //scrollView.zoomScale = 1.0 

     scrollView.addSubview(imageView) 
     view.addSubview(scrollView)