Iphone 分区的UITableView resize标头不会根据其大小进行拉伸
我有一个表视图,它有一个表视图的标题和另一个节的标题。 节的标题顶部有一个按钮,按下按钮时,我需要更改此标题的大小 我确实更改了标题大小,但其中的内容没有相应更改 我甚至用这个来修复它-Iphone 分区的UITableView resize标头不会根据其大小进行拉伸,iphone,xcode,uitableview,iphone-developer-program,sectionheader,Iphone,Xcode,Uitableview,Iphone Developer Program,Sectionheader,我有一个表视图,它有一个表视图的标题和另一个节的标题。 节的标题顶部有一个按钮,按下按钮时,我需要更改此标题的大小 我确实更改了标题大小,但其中的内容没有相应更改 我甚至用这个来修复它- _isHeaderExtended = !_isHeaderExtended; [self.testTable beginUpdates]; CGPoint point = testTable.contentOffset; point.y = (_isHeaderExtended)? point.y - 1:
_isHeaderExtended = !_isHeaderExtended;
[self.testTable beginUpdates];
CGPoint point = testTable.contentOffset;
point.y = (_isHeaderExtended)? point.y - 1: point.y + 1;
[testTable setContentOffset:point animated:NO];
[self.testTable endUpdates];
我的全部代码如下
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 30;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
return testView;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
[self.testTable beginUpdates];
CGFloat fl = (_isHeaderExtended)?200:100;
[self.testTable endUpdates];
return fl;
}
-(IBAction)buttonPushed:(id)sender {
_isHeaderExtended = !_isHeaderExtended;
[self.testTable beginUpdates];
CGPoint point = testTable.contentOffset;
point.y = (_isHeaderExtended)? point.y - 1: point.y + 1;
[testTable setContentOffset:point animated:NO];
[self.testTable endUpdates];
}
基本上,我需要标题的内容根据我使用的大小进行拉伸,
有什么想法吗?这样做:
- 消除对
中的heightForHeaderInSection
和beginUpdate
的调用。他们在endUpdate
协议中没有业务数据源
- 确保在标题视图中返回的视图已按预期进行初始化和配置。大概您可以在
中执行此操作viewDidLoad
- 为了让标题的内容伸展,您可以将此视图的
设置为所需的值。或者,您可以使用IB配置视图,以使用容器视图调整其大小。您必须在自动ResizingMask
中返回大小合适的视图viewForHeaderInSection
推荐的设计模式会有很大的不同:将所有大小的逻辑放入数据源方法中(
heightForHeaderInSection
和viewForHeaderInSection
),也就是说,您可以检查\u ISHEADEREXTENDED
变量。然后,在切换方法中,只需重新加载该部分。我认为应该将其更改为:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
if( _isHeaderExtended ){
return bigTestView;
} else {
return smallTestView;
}
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return _isHeaderExtended?200:100;
}
-(IBAction)buttonPushed:(id)sender {
_isHeaderExtended = !_isHeaderExtended;
[self.testTable reloadData];
}
然后您需要为标题创建一个bigTestView和一个smallTestView。我确实在HeightForHeaderIn部分中删除了begin+end。。。视图是从XIB文件获得的,因此我想它处理得很好。我确实使用了autoresizemask这件事是,节头确实增长到所需的值,但就好像细胞随着动画移动,节头不是,但它会根据我的需要增长和收缩,但节内的视图不会更新-有一些视图是半蓝色的,另一个是白色的,如果我移动屏幕,它会很好地更新,但我需要它在没有任何用户的情况下运行,然后只需调用
[headerView setNeedsDisplay]代码>并且应该更新。它不工作。。。setNeedsDisplay没有帮助:(它确实可以很好地增大和减小大小,但视图本身仍然不会更新。还有其他想法吗?我发现如果我将内容移动0.01,它会起作用,但必须有一种更好的方法,然后是这种临时方法……您可以在willLayoutSubviews
中显式设置单元格内视图的大小,您可以覆盖它。我经常使用这种技术,它非常强大。嘿,我知道这是一个老问题。但我面临着一个类似的问题。你能告诉我你是如何解决的吗?