tableView模式分组时确定自定义节标题框架

时间:2012-12-06 06:53:20

标签: ios uitableview

我通过tableView的委托方法提供自定义节标题。它在平面模式下工作正常,但我无法在分组样式中找出正确的边距。

Screenshot

有谁知道如何使节标题与tableView单元格对齐?

2 个答案:

答案 0 :(得分:0)

您可以创建自定义标签并相应地调整其框架。 例如。

- (UIView *)tableView:(UITableView *)aTableView viewForHeaderInSection:(NSInteger)section

{

UIView *view=[[UIView alloc] initWithFrame:aTableView.tableHeaderView.frame];


 UILabel *label=[[UILabel alloc] initWithFrame: CGRectMake(//set frame of the label as you want)];

[label setFont:[UIFont fontWithName: size:]];

[label setTextColor:[UIColor blackColor]];

[label setShadowOffset:CGSizeMake(0.0f, 1.0f)];

[label setShadowColor:[UIColor redColor];

label.backgroundColor=[UIColor clearColor];

if(section==0)

{

 [label setText://set your section0 title];

 }

else if(section ==1)

{

[label setText://set your section1 title];

 }

[view addSubview:label];

[label release];

 return [view autorelease];
}

Hope this helps :)

答案 1 :(得分:0)

没有经过各种口味的测试,但却是一个很好的起点。 在
 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
将tableView.style参数传递给您自己的方法,提供标头。 创建一个像
一样的框架视图  CGRect(0,0,CGRectGetWidth(tableView.frame), CGRectGetHeight(tableView.frame)
但添加一个带框架的子视图
CGRectInset(frame, 30,0)
如果你有一个分组tableView样式。将autoresizingMask设置为灵活宽度,它可以工作。

稍微修改一下,我必须为SectionHeaderView的创建方法提供一个额外的参数,因为presentationStyle FullScreen和Formsheet的边距是不同的。

        CGFloat margin = 0;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        margin = style == UITableViewStyleGrouped ? modalStyle == UIModalPresentationFormSheet ? 28 : 38 : 0;
    }
    else {
        margin = style == UITableViewStyleGrouped ? 5 : 0;
    }

    UIView *view = [[UIView alloc] initWithFrame:CGRectInset(frame, margin, 0)];
    view.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    [self addSubview:view];