1

我有一个headerView可以在按下时展开和折叠的。它的默认状态是折叠。

我使用以下代码来扩展headerView.

if (!self.headerViewIsExpanded) {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [self.collapsedHeaderView removeFromSuperview];
    self.headerView.frame = self.expandedHeaderView.frame;
    [self.headerView addSubview:self.expandedHeaderView];

    self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y + offset, self.tableView.frame.size.width, self.tableView.frame.size.height - offset);

    [UIView commitAnimations];
    self.headerViewIsExpanded = YES;
}

它正确地扩展了视图框架并缩小了 tableView 框架。但是,它无法扩展原始 UIControl 的触摸接收区域,因此我只能通过按原始框架所在的位置来折叠它。

我该如何解决这个问题?

编辑:或者,我会接受一个很好的解释,解释为什么我不能解决这个问题,或者至少不能安全地解决它。

编辑 1:更清楚地说,这headerView不是tableView标题视图。它只是位于恰好被调用的表顶部的视图headerViewheaderView和都是跨可用窗口tableView的主视图的子视图。UIView

4

1 回答 1

0

您可以尝试重载layoutSubviews方法。在内部,您应该为 headerView 使用 setFrame 方法来定义所有视图元素的位置。

于 2012-03-01T20:35:10.330 回答