読者です 読者をやめる 読者になる 読者になる

Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 682 - Interface Builder, FaceView controller, Gestures, Multiple MVCs 2

2017年3月16日:Developing iOS 10 Apps with Swift - Free Course by Stanford on iTunes Uの公開に合わせてiOS 10向けに書き換えました。

クラスの冒頭に外部で変更するためのパブリックな変数を集めました。

Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U

次はこの値をMVCでコントロールしていく準備をします。今のままでは変数の値を変更しても即座にViewの表示は変わりません。値の変化を感知する必要があるので便利な機能を使います。「プロパティ・オブザーバー」です。これも基本事項です。

yataiblue.hatenablog.com

以前勉強している時、どんな利用法があるのか検討もつかなかったんですが、このようにViewの表示にうってつけの機能ですね。

@IBInspectable
var scale: CGFloat = 0.9 { didSet { setNeedsDisplay() } }
@IBInspectable
var mouthCurvature: Double = 1.0 { didSet { setNeedsDisplay() } }
@IBInspectable
var eyesOpen: Bool = false { didSet { setNeedsDisplay() } }
// iOS 10講座ではいりません
// @IBInspectable
// var eyeBrowTilt: Double = -0.5 { didSet { setNeedsDisplay() } }
@IBInspectable
var color = UIColor.blueColor() { didSet { setNeedsDisplay() } }
@IBInspectable
var lineWidth: CGFloat = 5.0 { didSet { setNeedsDisplay() } }

setNeedsDisplay()」はマストリメンバーなメソッドです。ここで自分自身の持っている「self.draw()」を決してコールしてはいけないとポール先生は強調しています。draw()メソッドは必ずシステムに任せていないと致命的なエラーに陥ります。

今日はここまで。