我将动画代码放在我的UIView子类中的drawRect中。我真的在寻找像UIViewController的viewWillAppear这样的东西。但我想使用UIView而不是UIViewController。我正在使用下面的代码。将动画代码放在drawRect中是否合适?当显示视图时,动画只是一个启动动画。
- (void)drawRect:(CGRect)rect
{
[_graphView setFrame:CGRectMake(0.0f, 0.0f, 30.0 + (_defaultArray.count * STEP_X), self.frame.size.height)];
[self setContentSize:CGSizeMake(30.0 + (_defaultArray.count * STEP_X), _graphView.frame.size.height)];
float delayInSeconds = 0.25f;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
if (_graphView.frame.size.width > GRAPH_WIDTH) [self setContentOffset:CGPointMake(_graphView.frame.size.width - GRAPH_WIDTH, 0.0f) animated:YES];
});
}
答案 0 :(得分:2)
不,这是一个糟糕的主意。在-drawRect:
的实现中,您应该做的唯一事情是绘制视图的内容。你的代码都没有做任何接近的事情。
(如果此视图是UIScrollView
的子类,您可能根本不应该覆盖-drawRect:
。)
该代码看起来更适合在视图控制器中,或者可能在视图的设置代码中(它是否创建_graphView本身?)。在不了解其余代码的情况下,很难确切地确定其所属的位置。