2017-08-14 107 views
0

我一直堅持了幾個小時。我只需要一個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

請檢查我的回答 –

回答

1

你的問題是在UIScrollViewDelegate方法錯字

應該

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

希望這有助於你

+0

謝謝,這個固定的縮放的問題。 AspectFill仍然不工作壽:/ – MHCsk

+0

我認爲你應該使用'imageView.contentMode = .scaleAspectFit'而不是'imageView.contentMode = .scaleAspectFill' –

1

請試試這個:

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

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

創建兩個出口:---

 @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)