这个
的可可等价物是什么[UIView animateWithDuration:2 animations:^{
self.cell.someProperty = 12;
}];
我试过这个,但没有运气
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration:2];
[self.animator setSomeProperty:12.0];
} completionHandler:^{
}];
- (void)setSomeProperty:(CGFloat)property {
[self.cell setSomeProperty:property];
[self setNeedsDisplay];
}
我需要为属性设置动画的原因是因为我有一个NSCell子类,它在该属性上引入它自我依赖。
答案 0 :(得分:1)
1)
Core Animation exists on MacOS虽然您没有定义为" animateWithDuration
"在iOS下,您有CAAnimation和CABasicAnimation。
2)
您还发现了"NSAnimationContext
"(也许您发现了这个closely related question?这里的答案有一个非常漂亮的类别,您可以利用它。)
3)
您可能只是在执行setSomeProperty
时遇到了一些错误。
答案 1 :(得分:-1)
Mac OS没有像iOS那样的视图级动画。常见的动画框架是Core Animation。 (CALayer和CAAnimation objets)。
Mac OS具有符合NSAnimatablePropertyContainer协议的视图级别类。该协议允许您为要动画的对象请求动画代理对象(使用NSAnimatablePropertyContainer协议中的动画方法),然后在代理中而不是在对象中设置属性值,系统会为您设置动画。您可能想要购买Marcus Zarra或Bill Dudney的核心动画书籍。这两本书对于最近添加的动画iOS都已经过时了,但对Mac OS动画有着非常全面的处理。
我只玩过Mac OS特定的动画内容,但还没有在实际项目中使用它。 (我倾向于在Mac OS上使用较低级别的Core Animation代码,因为我熟悉它,并且它在Mac中很常见.NSAnimatablePropertyContainer协议和动画代理方案是Mac OS独有的。)< / p>