【问题标题】:UIDatePickers height is not animating?UIDatePickers 高度没有动画?
【发布时间】: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


【解决方案1】:

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

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

[已编辑] 示例代码:http://www.filedropper.com/tableviewsample

【讨论】:

  • 我可以用静态单元格做到这一点吗?
  • 是的,但出列单元格也可以工作并重用同一个单元格
  • 我可以删除单元格,(因为我知道 indexPath,)但是如何在不知道 indexPath 的情况下插入单元格?
猜你喜欢
  • 2019-02-04
  • 2015-09-13
  • 2022-01-13
  • 1970-01-01
  • 2014-07-08
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多