2017-05-06 80 views
1

我有點困惑。我遵循Apple給出的建議放大滾動視圖,但沒有任何反應。放大滾動查看

代碼:

import UIKit 
import SpriteKit 

class ScrollViewController: UIViewController, UIScrollViewDelegate { 
    var scrollView: UIScrollView! 
    var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     imageView = UIImageView(image: UIImage(named: "image.png")) 
     scrollView = UIScrollView(frame: view.bounds) 
     scrollView.contentSize = imageView.bounds.size 
     scrollView.addSubview(imageView) 
     self.scrollView.delegate = self 
     self.scrollView.minimumZoomScale = 0.5 
     self.scrollView.maximumZoomScale = 3 
     view.addSubview(scrollView) 
    } 

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

我可能失去了一些東西。但是,垂直或水平滾動的功能運作良好。但是當我按下「選項」並移動2個灰色點時,不會發生縮放。

+0

http://stackoverflow.com/a/43200996/1292099 – iWheelBuy

+0

查看我的答案到這個http://stackoverflow.com/questions/43624834/uiimageview-zoom-and-pinch-in-uiscrollview/43626273#43626273 。它的工作完美。 –

回答

0

您爲委託方法輸入了錯誤的名稱。似乎你從早期版本的Swift複製了該代碼。在斯威夫特3應該是:

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

要小心這樣的錯誤可以浪費這麼多時間。我建議您再次輸入每個委託方法「viewforzoom ...」,並自動完成將顯示正確的一個。

+0

歡迎您! –

+0

只是另一個問題,看來viewForZooming協議需要返回一個UIView。不過,我有我的scrollView中創建的UIImageVIew數組,我想返回它們,這是可能的嗎? 在我的情況我嘗試: FUNC viewForZooming(在滾動視圖:UIScrollView中) - >([UIView的]){ 返回postItTable } 與postItTable = [UIImageView的]() – VH24

+0

viewForZooming不是協議。協議名爲UIScrollViewDelegate,它定義了你的類(ScrollViewController)應該實現的確切方法。協議只有「viewForZooming(在scrollView:UIScrollView) - > UIView?」爲了這個目的,滾動視圖可以只問你的視圖控制器。我認爲你需要類似的東西:添加一些視圖,並在該視圖中添加圖像視圖作爲子視圖。和上面的方法將返回該視圖。 –