override func viewDidLoad() {
        super.viewDidLoad()
        imageView = UIImageView(image: UIImage(named: "image.png"))
        scrollView = UIScrollView(frame: view.bounds)
        scrollView.backgroundColor = UIColor.black
        scrollView.contentSize = imageView.bounds.size
        scrollView.autoresizingMask = UIView.AutoresizingMask(rawValue: UIView.AutoresizingMask.RawValue(UInt8(UIView.AutoresizingMask.flexibleWidth.rawValue) | UInt8(UIView.AutoresizingMask.flexibleHeight.rawValue)))
        scrollView.addSubview(imageView)
        view.addSubview(scrollView)

上面程式碼設定了名叫image的ImageView。然後設定ScrollView的contentSize。contentSize就是設定滾動區域的大小,我們把它設定為imageView.bounds.size,就是跟圖像的大小ㄧ樣。最後設定ScrollView的autoresizingMask,最後一行程式碼就是當裝置旋轉時,會重新調整大小。

當打開App的時候會發現永遠會設置在左上角,因為視圖的原點就是(0,0),UIScrollView有contentOffset的屬性,可以重新設定原點。

scrollView.contentOffset = CGPoint(x: Int, y: Int)

縮放功能需要遵從UIScrollViewDelegate的procotol,然後實作viewForZoomingInScrollView()的method並回傳要縮放的視圖。

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

接著要設定幾個property

// 是否可以按狀態列回到最上方
scrollView.scrollsToTop = false
// 縮放元件的預設縮放大小
scrollView.zoomScale = 1.0
// 縮放元件可縮小到的最小倍數
scrollView.minimumZoomScale = 0.5
// 縮放元件可放大到的最大倍數
scrollView.maximumZoomScale = 2.0
// 縮放元件縮放時是否在超過縮放倍數後使用彈回效果
scrollView.bouncesZoom = true
// 設置委任對象
scrollView.delegate = self

即可以實現縮放功能