我只是第一次学习一些基本的 Objective-C 和 iOS 开发,所以请多多包涵。我非常熟悉其他语言的 lambdas 概念,但这是我第一次使用 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
哪些变量需要动画。我从一个为位置(so、x 和 y)设置动画的示例开始,并认为我可能需要对 3 个变量进行动画处理。
然而,令我惊讶的是,这“刚刚奏效”。不知何故,语言似乎已经自动确定我想要动画r
,g
和b
. 编译器实际上是否在自省该块?这里发生了什么?如何animateWithDuration
知道我希望它随着时间的推移修改哪些变量?
提前致谢。