添加iOS UITableView HeaderView(不是节头)
我想添加一个表头(不是节标题),例如在联系人应用程序中:
就像这样 – 在桌子上方的图像旁边的标签。
我希望所有视图都是可滚动的,所以我不能把它放在桌子外面。
我怎样才能做到这一点?
UITableView
有一个tableHeaderView
属性。 把它设置为你想要的任何视图。
使用一个新的UIView
作为一个容器,将一个文本标签和一个图像视图添加到新的UIView
,然后将tableHeaderView
设置为新的视图。
例如,在一个UITableViewController
:
-(void)viewDidLoad { // ... UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)]; [headerView addSubview:imageView]; UILabel *labelView = [[UILabel alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)]; [headerView addSubview:labelView]; self.tableView.tableHeaderView = headerView; [imageView release]; [labelView release]; [headerView release]; // ... }
在Interface Builder中你可以做到这一点很容易。 只要用表格创build一个视图,然后把另一个视图放到表格上。 这将成为表头视图。 将您的标签和图像添加到该视图。 查看下面的图片查看层次结构。
你也可以简单地在界面构build器中创build一个UIView,拖放ImageView和UILabel(使它看起来像你想要的标题),然后使用它。
一旦你的UIView看起来像你想要的样子,你可以编程从XIB初始化并添加到你的UITableView。 换句话说,您不必在IB中devise整个表格。 只是headerView(这样的标题视图也可以在其他表中重用)
例如,我有一个自定义的UIView为我的表头之一。 这个视图是由一个名为“CustomHeaderView”的xib文件pipe理的,它在我的UITableViewController子类中使用下面的代码加载到表头中:
-(UIView *) customHeaderView { if (!customHeaderView) { [[NSBundle mainBundle] loadNibNamed:@"CustomHeaderView" owner:self options:nil]; } return customHeaderView; } - (void)viewDidLoad { [super viewDidLoad]; // Set the CustomerHeaderView as the tables header view self.tableView.tableHeaderView = self.customHeaderView; }
在Swift中 :
override func viewDidLoad() { super.viewDidLoad() // We set the table view header. let cellTableViewHeader = tableView.dequeueReusableCellWithIdentifier(TableViewController.tableViewHeaderCustomCellIdentifier) as! UITableViewCell cellTableViewHeader.frame = CGRectMake(0, 0, self.tableView.bounds.width, self.heightCache[TableViewController.tableViewHeaderCustomCellIdentifier]!) self.tableView.tableHeaderView = cellTableViewHeader // We set the table view footer, just know that it will also remove extra cells from tableview. let cellTableViewFooter = tableView.dequeueReusableCellWithIdentifier(TableViewController.tableViewFooterCustomCellIdentifier) as! UITableViewCell cellTableViewFooter.frame = CGRectMake(0, 0, self.tableView.bounds.width, self.heightCache[TableViewController.tableViewFooterCustomCellIdentifier]!) self.tableView.tableFooterView = cellTableViewFooter }
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,tableView.frame.size.width,30)]; headerView.backgroundColor=[[UIColor redColor]colorWithAlphaComponent:0.5f]; headerView.layer.borderColor=[UIColor blackColor].CGColor; headerView.layer.borderWidth=1.0f; UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 5,100,20)]; headerLabel.textAlignment = NSTextAlignmentRight; headerLabel.text = @"LeadCode "; //headerLabel.textColor=[UIColor whiteColor]; headerLabel.backgroundColor = [UIColor clearColor]; [headerView addSubview:headerLabel]; UILabel *headerLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(60, 0, headerView.frame.size.width-120.0, headerView.frame.size.height)]; headerLabel1.textAlignment = NSTextAlignmentRight; headerLabel1.text = @"LeadName"; headerLabel.textColor=[UIColor whiteColor]; headerLabel1.backgroundColor = [UIColor clearColor]; [headerView addSubview:headerLabel1]; return headerView; }
- 用相机进行人脸检测
- 从不兼容的types'ViewController * const_strong'分配给'id <Delegate>'
- 如何在Core Data中编写一个BOOL谓词?
- AVURLAsset拒绝加载video
- 这是什么意思? “'NSUnknownKeyException',原因:…这个类不是密钥X的编码兼容密钥值”
- dismissModalViewControllerAnimated弃用
- Storyboard – 参考AppDelegate中的ViewController
- 设置UILabel行间距
- didFailWithError:错误域= kCLErrorDomain代码= 0“操作无法完成。 (kCLErrorDomain错误0.)“