初めてObjective-CとiOSの基本的な開発を学んでいるところですので、ご容赦ください。私は他の言語のラムダの概念に精通していますが、Objective-Cブロックを使用するのはこれが初めてです。
そこで、UIKitアニメーションのチュートリアルに従って、背景色をアニメーション化して拡張すると思いました。私はこれを書いた:
- (void) setBG: (float)r g:(float)g b:(float)b duration:(float)secs
{
[UIView animateWithDuration:secs delay:0.0 options:0
animations:^{
[self setBackgroundColor: [UIColor colorWithRed:r green:g blue:b alpha:1.0]];
}
completion:nil];
}
だから、私はどういうわけか、animateWithDuration
どの変数をアニメートする必要があるかを伝える必要があると思っていました。これは、位置(つまり、xとy)をアニメーション化する例から始め、3つの変数をアニメーション化するためにいくつかの変更を加える必要があるかもしれないと考えました。
しかし、驚いたことに、これは「うまくいった」。どういうわけか、言語は、、、、およびをアニメーションr
化することを自動的に決定したようです。コンパイラは実際にブロックを内省していますか?ここで何が起きてるの?時間の経過とともに変更する変数をどのようにして知ることができますか?g
b
animateWithDuration
前もって感謝します。