0

我将动画代码放在 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];

    });
}
4

1 回答 1

2

不,这是一个糟糕的主意。在实现中您应该做的唯一一件事-drawRect:就是绘制视图的内容。您的任何代码都没有做任何接近此的事情。

(如果此视图是 的子类UIScrollView,则您可能根本不应该覆盖-drawRect:。)

该代码看起来更适合在视图控制器中,或者在视图的设置代码中(它是否创建 _graphView 本身?)。如果不了解更多关于代码的其余部分,很难准确地建议它属于哪里。

于 2013-02-18T06:11:10.613 回答