layoutSubviews和动画

时间:2014-01-14 19:15:48

标签: ios objective-c

我遇到了动画问题。

这是我目前的设置

  1. 我已经初始化了我的对象(UIViews) - (id)initWithFrame:(CGRect)frame方法
  2. 我在- (void)layoutSubviews方法中调整和分层视图框架以及添加的子视图。
  3. 当我尝试为视图/子视图设置动画时,没有任何反应。一切顺利,直到我将分层移动到“initWithFrame”方法,它运作良好。

    有人可以解释原因是什么以及为什么layoutSubviews中的分层视图无法很好地动画?

    我认为这可能是由于调用方法的层次结构,我是否正确地想到了这一点?

    代码(UIView的子类):

    - (id)initWithFrame:(CGRect)frame
    {
    (...)
    backgroundView = [[UIView alloc] initWithFrame:CGRectZero];
    backgroundView.backgroundColor = [UIColor whiteColor];
    (...)
    }
    
    - (void)layoutSubviews
    {
    CGRect frame = CGRectZero;
    (...)
    frame = (CGRect){ 100, 100, 200, 200 };
    [backgroundView setFrame:frame];
    (...)
    [self addSubview:backgroundView];
    }
    
    - (void)animate 
    {
    [UIView animateWithDuration:1.0f animations:^{
    backgroundView.frame = CGRectMake(100, 100, 300, 300);
    } completion:^{BOOL f){ 
    NSLog(@"w: %f h: %f", backgroundView.frame.size.width, backgroundView.frame.size.height); 
    }];
    }
    

    尝试从子视图调用“animate”(使用[(MyClass *)self.superview animate])以及发送通知。 始终记录

      

    w:200小时:200

0 个答案:

没有答案