4

我想以编程方式模仿此标头的确切外观: 在此处输入图像描述

到目前为止,我最好的尝试是:

UILabel* header = [[UILabel alloc] init] ;
header.backgroundColor = [UIColor clearColor];
header.textAlignment = NSTextAlignmentCenter;
header.textColor = [[UIColor alloc] initWithRed:86 green:92 blue:112 alpha:0.1];
header.shadowColor = [UIColor darkGrayColor];
header.shadowOffset = CGSizeMake(1,0);
header.font = [UIFont boldSystemFontOfSize:18];

但它看起来像这样: 在此处输入图像描述

有人可以帮助我以确切的方式做到这一点吗?

提前致谢!

4

3 回答 3

3

一位挪威人不久前写了一篇关于此的博客文章:http ://www.gersh.no/posts/view/default_styling_of_sections_headers_in_uitableview_grouped

在此处输入图像描述

所有学分都归他所有,以获取代码。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
    containerView.backgroundColor = [UIColor groupTableViewBackgroundColor];
    CGRect labelFrame = CGRectMake(20, 2, 320, 30);
    if(section == 0) {
        labelFrame.origin.y = 13;
    }
    UILabel *label = [[UILabel alloc] initWithFrame:labelFrame];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:17];
    label.shadowColor = [UIColor colorWithWhite:1.0 alpha:1];
    label.shadowOffset = CGSizeMake(0, 1);
    label.textColor = [UIColor colorWithRed:0.265 green:0.294 blue:0.367 alpha:1.000];
    label.text = [self tableView:tableView titleForHeaderInSection:section];
    [containerView addSubview:label];
    return containerView;
}
于 2013-09-11T09:45:06.450 回答
1

任何一个

你需要设置header.frame = CGRectMake(10,1, 100, 18 );

或者

使用 Datasource 方法UITableView

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return @"Header"; // just pass name of your hearder
}

编辑:

-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
   UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
   UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 2, 100, 18)];
   label.text= [self.listOfHeader objectAtIndex:section];
   label.backgroundColor=[UIColor clearColor];
   label.textAlignment=NSTextAlignmentLeft;
   [view addSubview:label];
   return view;
}

并且还添加

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 20;
}
于 2013-09-11T09:37:42.237 回答
0

你可以做什么它以动态/编程方式计算你的 UILabel 的宽度。使用此代码:

CGSize maximumLabelSize = CGSizeMake(296,9999);
CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font 
                        constrainedToSize:maximumLabelSize 
                        lineBreakMode:yourLabel.lineBreakMode]; 

然后将 10 像素添加到你得到的宽度。设置 UILabel 的框架。并且,按照以下方式设置:

header.frame = CGRectMake(0.0,5.0,expectedLabelSize.width + 10.0,expectedLabelSize.height);
header.textAlignment = NSTextAlignmentRight;
于 2013-09-11T09:45:19.693 回答