Swiftで遊ぼう! - 685 - Interface Builder, FaceView controller, Gestures, Multiple MVCs 5
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
- Table View実装チュートリアルをXcode7.3で解説
- Core Data シンプルチュートリアル
- 私の本業、オフィシャルなブログ-> Life-LOG
講義5も内容豊富なんで先に進まないと...
Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U
今日はジェスチャーの復習です。ジェスチャーは何度も実装しているので簡単にいきましょう。
基本的にジェスチャーオブジェクトを作って、ジェスチャーが必要なViewオブジェクトに組み込みます。コードで実装する方法とストーリーボードを使って実装する方法。ジェスチャーで使用するメソッドを何処で扱うかなど、いくつかバリエーションがあるのでみていきます。
まず、コードで実装する方法。View(faceView)が持っている変数を、Viewが持つメソッドで変更する場合から見ていきます。
Pinchジェスチャーの実装
ジェスチャーの実装はFaceViewControllerにコードします。faceViewのアウトレットに組み込みますが、このやり方がベストだとは思いませんが、まだ習っていないことが多いのでプロパティのプロパティ・オブザーバーを使用するというのが今のところ望ましいということでしょう。
@IBOutlet weak var faceView: FaceView! { didSet { faceView.addGestureRecognizer(UIPinchGestureRecognizer( target: faceView, action: #selector(faceView.changeScale(_:)) )) upDateUI() }
「target」と「action」の指定は重要です。当然ジェスチャーを組み込むtargetはfaceViewでメソッド(action)もfaceViewに定義します。
chageScaleはカスタムメソッドです。
次にFaceView.swiftを開いて次のパブリックなメソッドを加えます。
func changeScale(recognizer: UIPinchGestureRecognizer) { switch recognizer.state { case .Changed, .Ended: scale *= recognizer.scale recognizer.scale = 1.0 default: break } }
ポイントは、パラメーター名を「recognizer」にすること。「switch-case文」は公式みたいなものです。たったこれだけでピンチが実装できました。
今日はここまで。