iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
自我挑戰組

Swift!從新手到微上手系列 第 16

Swift-Scroll View

好快啊,默默的鐵人也來到第16天

Scroll View被使用在某個超出螢幕的視圖,讓視圖可以滾動及縮放在Scroll View裡

  • 讓使用者可以拖曳到想顯示的部分
  • 讓使用者使用手勢可以放大縮小視圖

建立Scroll View

  1. 在storyboard的Library放入ScrollView跟ImageView

  1. 再連結ScrollView跟ImageView的IBOutlet
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var imageView: UIImageView!
  1. viewDidLoad裡加入
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

即可以實現縮放功能


上一篇
Swift-UIPickerView & UIDatePicker
下一篇
Swift-Stack View
系列文
Swift!從新手到微上手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言