UIDatePickers高度不是动画?

时间:2015-04-17 18:36:00

标签: ios objective-c uitableview animation autolayout

我在静态UIDatePicker中有一个UITableViewCell,其中应用了自动布局(datePicker)。隐藏datePicker,直到选择button为止。选择button后,datePicker变为可见,cells高度变大。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 1)
    {
        if (self.datePickerView.hidden == YES) {
            return 252 - self.datePickerView.bounds.size.height;
        }
        else return 252;
    }
    tableView.estimatedRowHeight = 150;
    return UITableViewAutomaticDimension;
}

- (IBAction)datePicker:(id)sender
{
    if (self.datePickerView.hidden == YES)
    {
        [self.datePickerView setHidden:NO];

        CGFloat originalHeight = 162;
        [self.datePickerView setFrame:CGRectMake(self.datePickerView.frame.origin.x, self.datePickerView.frame.origin.y, self.datePickerView.frame.size.width, 0)];
        [UIDatePicker animateWithDuration:1.0 animations:^(){
            [self.datePickerView setFrame:CGRectMake(self.datePickerView.frame.origin.x, self.datePickerView.frame.origin.y, self.datePickerView.frame.size.width, originalHeight)];
        }];
    } else {

        [self.datePickerView setHidden:YES];
    }
    [self.tableView beginUpdates];
    [self.tableView endUpdates];
}

选择button后,cells高度会动画,但datePicker不是。{1}}。它只是出现,并阻碍了所有事情,直到cell完成动画。

如何让datePicker为其高度设置动画,因此它应与cell一起制作动画?

1 个答案:

答案 0 :(得分:1)

更新框架不适用于自动布局。你必须更新你的约束来做动画。

在您的情况下,您应该为datePickerview设置单独的单元格,并在tableview中插入/删除单元格,以隐藏和显示带动画的选择器视图。

将帖子 示例代码:http://www.filedropper.com/tableviewsample