我在静态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
一起制作动画?
答案 0 :(得分:1)
更新框架不适用于自动布局。你必须更新你的约束来做动画。
在您的情况下,您应该为datePickerview设置单独的单元格,并在tableview中插入/删除单元格,以隐藏和显示带动画的选择器视图。