Swiftで遊ぼう! - 301 - Scroll Viewのデリゲート・メソッド
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
- Table View実装チュートリアルをXcode7.3で解説
- Core Data シンプルチュートリアル
- 私の本業、オフィシャルなブログ-> Life-LOG
2016年6月6日:加筆していません。2年後のiOS9バージョンの講義と全く同じでした(^_^;)
実はScroll Viewの学習で最も重要なトピックは、iOS API利用におけるデリゲート・メソッドの取り扱いです。
基本的なデリゲーションの説明は上記でしていますが、iOS API利用にこの考え方は欠かせません。ここで6つのステップを説明していますが、API利用のデリゲートはステップ4、5そして6を実装するだけです。
プロトコール利用の場合、必ずデリゲートされているメソッドを全て実装しないとランタイムエラーに陥りますが、API利用の場合、すべてオプショナル扱いになるので使いたいメソッドだけ実装したらいいようです。
Scroll Viewには全部で12個のデリゲーションメソッドがありますが、ZoomingのメソッドのviewForZoomingInScrollView()を実装してみます*1。
先ず、Scrol Viewでデリゲートさせたいメソッドを含んだプロトコールをImageViewController宣言をさせます。これはステップ4になります。
class ImageViewController: UIViewController, UIScrollViewDelegate { ...
次はステップ5で、scrollViewのdelegateプロパティにImageViewController自身を持たせます。ImageViewController上のscrollView宣言部分でdelegate先を指定します。たぶん初心者には分かりにくい説明だと思いますが、これは慣れるしかないでしょう。
@IBOutlet weak var scrollView: UIScrollView! { didSet { scrollView.contentSize = imageView.frame.size scrollView.delegate = self scrollView.minimumZoomScale = 0.03 scrollView.maximumZoomScale = 1.0 } }
そして最後のステップ6はメソッドの実装です。
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { return imageView }
たったこれだけで画像のズーミングができるようになりました。
今日はデリゲーションの復習でした。
*1:このメソッドは、minimumZoomScaleとmaximumZoomScaleを設定しないと動かないので同時に設定します。