2017-06-06 88 views
-1

我正在面对Swift中的滚动视图这个奇怪的问题,即使在定义文件中的滚动视图后图像也不滚动,我还添加了缩放并且它工作正常。请帮我这个 https://pastebin.com/1uC3fqHG无法在swift中使用滚动视图滚动图像

import UIKit 

class ImageViewController: UIViewController 
{ 
    var imageURL: URL? { 
     didSet { 
      image = nil 
      if view.window != nil { 
       fetchImage() 
      } 
     } 
    } 

    private func fetchImage() { 
     if let url = imageURL { 
      let urlContents = try? Data(contentsOf: url) 
      if let imageData = urlContents { 
       image = UIImage(data: imageData) 
      } 
     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.addSubview(imageView) 
     imageURL = URL(string: "http://www.lamborghini.com/en-en/sites/en-en/files/DAM/lamborghini/share%20img/huracan-coupe-facebook-og.jpg") 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     if image == nil { 
      fetchImage() 
     } 

    } 

    @IBOutlet weak var scrollView: UIScrollView! { 
     didSet { 

      scrollView.delegate = self 
      scrollView.minimumZoomScale = 0.03 
      scrollView.maximumZoomScale = 2.0 
      scrollView.contentSize = imageView.frame.size 
      scrollView.addSubview(imageView) 
     } 
    } 


    fileprivate var imageView = UIImageView() 

    private var image: UIImage? { 
     get{ 
      return imageView.image 
     } 
     set{ 
      imageView.image = newValue 
      imageView.sizeToFit() 
      scrollView?.contentSize = imageView.frame.size 
     } 
    } 
} 

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

回答

0

的问题是,您要添加的图像视图中viewDidLoad中()。从viewDidLoad()中删除view.addSubview(imageView),并且所有都将完美工作。 代码将成为如下

import UIKit 

class ImageViewController: UIViewController 
{ 
    var imageURL: URL? { 
     didSet { 
      image = nil 
      if view.window != nil { 
       fetchImage() 
      } 
     } 
    } 

    private func fetchImage() { 
     if let url = imageURL { 
      let urlContents = try? Data(contentsOf: url) 
      if let imageData = urlContents { 
       image = UIImage(data: imageData) 
      } 
     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     imageURL = URL(string: "http://www.lamborghini.com/en-en/sites/en-en/files/DAM/lamborghini/share%20img/huracan-coupe-facebook-og.jpg") 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     if image == nil { 
      fetchImage() 
     } 

    } 

    @IBOutlet weak var scrollView: UIScrollView! { 
     didSet { 

      scrollView.delegate = self 
      scrollView.minimumZoomScale = 0.03 
      scrollView.maximumZoomScale = 2.0 
      scrollView.contentSize = imageView.frame.size 
      scrollView.addSubview(imageView) 
     } 
    } 


    fileprivate var imageView = UIImageView() 

    private var image: UIImage? { 
     get{ 
      return imageView.image 
     } 
     set{ 
      imageView.image = newValue 
      imageView.sizeToFit() 
      scrollView?.contentSize = imageView.frame.size 
     } 
    } 
} 

extension ImageViewController: UIScrollViewDelegate 
{ 
    func viewForZooming(in scrollView: UIScrollView) -> UIView? { 
     return imageView 
    } 
} 
+1

感谢很多:) –

0

你应该更新内容大小和更新的图像视图约束结帐这个tutorial