【发布时间】:2014-06-12 22:05:08
【问题描述】:
有没有办法知道我的 setFrame: 的自定义实现(或可动画属性的其他设置器)是从动画块调用的,即它是动画还是直接设置?
例子:
- (void)setFrame:(CGRect)newFrame {
[super setFrame:newFrame];
BOOL willBeAnimated = ?????
if (willBeAnimated) {
// do something
} else {
// do something else
}
}
在上面的 setter 中 willBeAnimated 应该是 YES 它是这样调用的:
- (void)someMethod {
[UIView animateWithDuration:0.2
animations:^{view.frame = someRect;}
completion:nil];
}
和NO 在这种情况下:
- (void)someMethod {
view.frame = someRect;
}
someMethod 这是 UIKit 内部的一个私有方法,我无法访问或更改,所以我必须以某种方式从“外部”确定它。
【问题讨论】:
-
您能否将动画:(BOOL)作为参数添加到您的实现中,如果您想调用设置帧,无论它是否在动画块内被调用,都可以传递它?
-
@Mike 不幸的是,我没有调用 setFrame,我无权访问该代码。
标签: ios objective-c animation uiview uikit