设置编辑时动画帧的方式

时间:2011-09-19 11:02:48

标签: iphone ios cocoa-touch uitableview transition

我想平滑过渡checkBox和noteButton就像textLabel一样。我尝试了这段代码但不起作用:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {

    if (self.editing == NO) {
        self.checkBox.frame = CGRectMake(50, 0, 50, 50);
        self.noteButton.frame = CGRectMake(100, 0, 50, 50);
        self.textLabel.frame =  CGRectMake(95,0, 213, 48);
    } else {
        self.checkBox.frame = CGRectMake(10, 0, 50, 50);
        self.noteButton.frame = CGRectMake(50, 0, 50, 50);
        self.textLabel.frame =  CGRectMake(95,0, 213, 48);
    }
    [super setEditing:editing animated:animated];
}

2 个答案:

答案 0 :(得分:0)

尝试在

中进行
- (void) layoutSubviews {
  if (self.editing == NO) {
    self.checkBox.frame = CGRectMake(50, 0, 50, 50);
    self.noteButton.frame = CGRectMake(100, 0, 50, 50);
    self.textLabel.frame =  CGRectMake(95,0, 213, 48);
  } else {
    self.checkBox.frame = CGRectMake(10, 0, 50, 50);
    self.noteButton.frame = CGRectMake(50, 0, 50, 50);
    self.textLabel.frame =  CGRectMake(95,0, 213, 48);
  }
}

答案 1 :(得分:0)

这应该有用。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [UIView beginAnimations:@"ResizeAnimation" context:NULL];
    [UIView setAnimationDuration:0.7f];
    if (self.editing == NO) {
        self.checkBox.frame = CGRectMake(50, 0, 50, 50);
        self.noteButton.frame = CGRectMake(100, 0, 50, 50);
        self.textLabel.frame =  CGRectMake(95,0, 213, 48);
    } else {
        self.checkBox.frame = CGRectMake(10, 0, 50, 50);
        self.noteButton.frame = CGRectMake(50, 0, 50, 50);
        self.textLabel.frame =  CGRectMake(95,0, 213, 48);
    }
    [UIView commitAnimations];
    [super setEditing:editing animated:animated];
}