我试图实现
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
以黑色部分而不是白色颜色获取标题的文本标签,但它看起来与SDK创建的默认颜色不同,我很难看。
如何重新创建与SDK中的UIView完全相同的UIView?
来自Apple文档:
Discussion
表视图对节标题标题使用固定字体样式。如果需要不同的字体样式,请在委托方法tableView:viewForHeaderInSection中返回自定义视图(例如,UILabel对象):
答案 0 :(得分:13)
虽然这不完全正确,但我发布此信息是希望有人可以改进我的方法。文本是正确的(默认为白色,但您可以更改)。背景渐变和不透明度并不完美(太亮了) - 可能需要进行一些调整。
在此处获取sectionheaderbackground.png:http://img5.imageshack.us/img5/6616/sectionheaderbackground.png
// Create a stretchable image that emulates the default gradient
UIImage *buttonImageNormal = [UIImage imageNamed:@"sectionheaderbackground.png"];
UIImage *stretchableButtonImageNormal = [buttonImageNormal stretchableImageWithLeftCapWidth:12 topCapHeight:0];
// Create the view for the header
CGRect sectionFrame = CGRectMake(0.0, 0.0, 320.0, 22.0);
UIView *sectionView = [[UIView alloc] initWithFrame:sectionFrame];
sectionView.alpha = 0.9;
sectionView.backgroundColor = [UIColor colorWithPatternImage:stretchableButtonImageNormal];
// Create the label
CGRect labelFrame = CGRectMake(10.0, 0.0, 310.0, 22.0);
UILabel *sectionLabel = [[UILabel alloc] initWithFrame:labelFrame];
sectionLabel.text = @"Test section label";
sectionLabel.font = [UIFont boldSystemFontOfSize:18.0];
sectionLabel.textColor = [UIColor whiteColor];
sectionLabel.shadowColor = [UIColor grayColor];
sectionLabel.shadowOffset = CGSizeMake(0, 1);
sectionLabel.backgroundColor = [UIColor clearColor];
[sectionView addSubview:sectionLabel];
[sectionLabel release];
// Return the header section view
return sectionView;
答案 1 :(得分:1)
您可以通过在tableview类中实现以下方法来获取默认的UITableView节标题:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
return nil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 22; //returning 0 hides section headers
}
如果您在应用中使用UISearchDisplayController,这可能会特别有用,您希望以简单的UITableViewStylePlain
方式显示搜索结果,而不是,例如,您自定义的UITableViewStyleGrouped
主要的表格。然后你可以实现这样的东西:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if ([self.searchDisplayController.searchBar isFirstResponder]) return nil;
//create and return your custom UIView here
}
答案 2 :(得分:0)
您可以尝试使用shadowColor
和shadowOffset
来模仿它。
我用黑色完成了它,例如使用如下代码:
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake(1, 1);
通过弄乱颜色和阴影组合,你可以很好地模仿标签。
答案 3 :(得分:0)
如果您想重新创建 默认 /标准 heightForHeaderInSection ,请使用以下命令:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 44;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 44)];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 11, tableView.frame.size.width-100, 21)];
label.text = @"Text";
label.textColor = [UIColor colorWithRed:76.0/255 green:86.0/255 blue:108.0/255 alpha:1];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont fontWithName:@"Helvetica-Bold" size:17.0];
[view addSubview:label];
return view;
}