[英]Header/Footer height of a UITableView section based on title text height
[英]Adjusting the height of a uitableview section footer
我剛剛開始使用UITableView節的頁腳,但是遇到了一些問題。 所以我有一個UITableView,使用頁腳在底部附加了一個編輯按鈕。 我的第一個問題是,當您單擊該按鈕時,頁腳的大小應加倍,因為編輯按鈕將變為添加按鈕和完成按鈕,而不僅僅是一個按鈕。 什么是增加頁腳大小的最佳方法。 我試圖通過self.tableView.tableFooterView.frame = CGRectMake(0, 0, 320, 88);
更改頁腳的框架self.tableView.tableFooterView.frame = CGRectMake(0, 0, 320, 88);
但這不起作用。
我的第二個問題是,我希望頁腳始終與表格一起滾動,就像它只是另一個單元格一樣。 無論如何,它都應該位於表格的底部。 如果用戶向下滾動,則它不應停在屏幕底部並停留在屏幕上,而應繼續滾動其余的tableview。 我該如何解決?
這是我創建頁腳的方法:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 48;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
//view.backgroundColor = [UIColor grayColor];
self.addButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.addButton.frame = CGRectMake(0, 0, 320, 44);
[self.addButton setImage:[UIImage imageNamed:@"Add_Class_Button"] forState:UIControlStateNormal];
[self.addButton setImage:[UIImage imageNamed:@"Add_Class_Button"] forState:UIControlStateHighlighted];
[self.addButton addTarget:self action:@selector(addSelected:) forControlEvents:UIControlEventTouchUpInside];
self.addButton.hidden = YES;
[view addSubview:self.addButton];
self.editButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.editButton.frame = CGRectMake(0, 0, 320, 44);
[self.editButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateNormal];
[self.editButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateHighlighted];
[self.editButton addTarget:self action:@selector(editSelected:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:self.editButton];
self.editDoneButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.editDoneButton.frame = CGRectMake(0, self.addClassButton.frame.size.height-2, 320, 44);
[self.editDoneButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateNormal];
[self.editDoneButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateHighlighted];
[self.editDoneButton addTarget:self action:@selector(doneSelected) forControlEvents:UIControlEventTouchUpInside];
self.editDoneButton.hidden = YES;
[view addSubview:self.editDoneButton];
self.editLabel = [[UILabel alloc] init];
self.editLabel.frame = CGRectMake(10, 5, 100, 30);
self.editLabel.text = @"Edit";
self.editLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
[view addSubview:self.editLabel];
self.addLabel = [[UILabel alloc] init];
self.addLabel.frame = CGRectMake(10, 5, 100, 30);
self.addLabel.text = @"Add";
self.addLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
self.addLabel.hidden = YES;
[view addSubview:self.addLabel];
self.editDoneLabel = [[UILabel alloc] init];
self.editDoneLabel.frame = CGRectMake(10, self.addClassButton.frame.size.height + 5, 150, 30);
self.editDoneLabel.text = @"Done";
self.editDoneLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
self.editDoneLabel.hidden = YES;
[view addSubview:self.editDoneLabel];
self.theLine = [[UIView alloc] init];
self.theLine.frame = CGRectMake(0, 0, 320, .5);
UIColor *borderColor = [UIColor colorWithRed:193/255.5 green:193/255.0 blue:193/255.0 alpha:1.0];
self.theLine.backgroundColor = borderColor;
[view addSubview:self.theLine];
return view;
}
編輯
在考慮了下面的答案之后,這就是我已經切換到的內容,但是現在我的頁腳曾經是,只有一個灰色矩形。
這是我現在使用的代碼:
-(void)setUpFooter {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 48)];
view.backgroundColor = [UIColor redColor];
self.addButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.addButton.frame = CGRectMake(0, 0, 320, 44);
[self.addButton setImage:[UIImage imageNamed:@"Add_Class_Button"] forState:UIControlStateNormal];
[self.addButton setImage:[UIImage imageNamed:@"Add_Class_Button"] forState:UIControlStateHighlighted];
[self.addButton addTarget:self action:@selector(addSelected:) forControlEvents:UIControlEventTouchUpInside];
self.addButton.hidden = YES;
[view addSubview:self.addButton];
self.editButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.editButton.frame = CGRectMake(0, 0, 320, 44);
[self.editButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateNormal];
[self.editButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateHighlighted];
[self.editButton addTarget:self action:@selector(editSelected:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:self.editButton];
self.editDoneButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.editDoneButton.frame = CGRectMake(0, self.addClassButton.frame.size.height-2, 320, 44);
[self.editDoneButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateNormal];
[self.editDoneButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateHighlighted];
[self.editDoneButton addTarget:self action:@selector(doneSelected) forControlEvents:UIControlEventTouchUpInside];
self.editDoneButton.hidden = YES;
[view addSubview:self.editDoneButton];
self.editLabel = [[UILabel alloc] init];
self.editLabel.frame = CGRectMake(10, 5, 100, 30);
self.editLabel.text = @"Edit";
self.editLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
[view addSubview:self.editLabel];
self.addLabel = [[UILabel alloc] init];
self.addLabel.frame = CGRectMake(10, 5, 100, 30);
self.addLabel.text = @"Add";
self.addLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
self.addLabel.hidden = YES;
[view addSubview:self.addLabel];
self.editDoneLabel = [[UILabel alloc] init];
self.editDoneLabel.frame = CGRectMake(10, self.addClassButton.frame.size.height + 5, 150, 30);
self.editDoneLabel.text = @"Done";
self.editDoneLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
self.editDoneLabel.hidden = YES;
[view addSubview:self.editDoneLabel];
self.theLine = [[UIView alloc] init];
self.theLine.frame = CGRectMake(0, 0, 320, .5);
UIColor *borderColor = [UIColor colorWithRed:193/255.5 green:193/255.0 blue:193/255.0 alpha:1.0];
self.theLine.backgroundColor = borderColor;
[view addSubview:self.theLine];
view.userInteractionEnabled = YES;
self.classTableView.tableFooterView = view;
self.classTableView.tableFooterView.userInteractionEnabled = YES;
}
希望我能幫上忙。
要設置節的頁腳高度,還必須在heightForFooterInSection
方法中更改返回值。 要重新加載高度,可以調用[tableView reloadData]
或[tableView reloadSections:...]
。
表格部分的頁腳始終固定在屏幕底部,但是在表格視圖之后放置東西的視圖不同。 tableView.tableFooterView
是一個位於表視圖之后的視圖。 更改此項以在表視圖之后添加元素。
干杯!
UITableView
有兩種類型的頁腳。 表格底部有表格頁腳,每個部分的底部都有表格部分頁腳。
聽起來您想使用表節標題。 但是,您的代碼段將設置表格頁腳的框架,而不是表格部分頁腳的框架。
self.tableView.tableFooterView.frame = CGRectMake(0, 0, 320, 88);
如果要調整表節的頁腳高度,則tableView:heightForFooterInSection:
方法將需要返回不同的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.