我有一个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
标题视图。它只是一个位于表顶部的视图,恰好称为headerView
。 headerView
和tableView
都是跨越可用窗口的主UIView
的子视图。
答案 0 :(得分:0)
您可以尝试重载 layoutSubviews 方法。在里面你应该使用setView的setFrame方法来定义所有视图元素的位置。