0

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

截屏

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

4

2 回答 2

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 :)
于 2012-12-06T07:07:17.590 回答
0

没有在每种口味中都经过测试,但这是一个很好的起点。将tableView.style
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
参数传递给您自己提供标题的方法。 如果您有分组的 tableView 样式,请创建一个类似框架
CGRect(0,0,CGRectGetWidth(tableView.frame), CGRectGetHeight(tableView.frame)
的视图,但添加一个带有框架的子视图。
CGRectInset(frame, 30,0)
将 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];
于 2012-12-06T07:37:31.730 回答