【发布时间】:2023-03-04 10:12:01
【问题描述】:
我在静态UITableViewCell 中有一个UIDatePicker,并应用了自动布局(应用于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 不是。它只是出现,并阻碍了一切,直到 cell 完成动画。
如何让datePicker 为其高度设置动画,所以它应该与cell 一起设置动画?
【问题讨论】:
-
问题可能是日期选择器的高度不取决于您。一般来说,你真的无法改变它;所以这可能就是为什么不能动画改变它的原因。
-
好点!!那么你还有其他解决方案吗?也许是一种解决方法?
-
您可以对 UITableViewCell 进行子类化,以允许包含 UIDatePicker 的单元格与单元格大小调整同时进行动画处理。我的一个问题是:为什么在使用 Autolayout 的同时尝试设置 UIDatePicker 框架?
-
我这样做是为了让它的高度动画
-
听听@MikeBell 告诉你什么。如果您使用自动布局,则不得更改任何内容的框架。您必须更改约束。您可以为约束的变化设置动画。也许这会解决它?
标签: ios objective-c uitableview animation autolayout