如何旋转viewForHeaderInSection

时间:2011-03-30 13:23:52

标签: iphone uitableview resize

UITableView有自定义标题UIView ,其中包含UILabel。由于表格右侧还有分段索引,我希望将标签置于剩余空间中。

enter image description here

问题是当设备旋转到横向时,如何以相同的方式“居中”标签!我已经尝试过Interface Builder和仅代码,而且总是出错。

限制:

  1. 标签尽可能窄
  2. 标签不得调整大小
  3. 标签必须始终位于表格宽度减去区段索引
  4. 解决这个问题的一种简单方法是将section header视图从tableView右侧分离。试图这样做,失败了。以下是 viewForHeaderInSection

    中的一些代码
    CGRect frame = CGRectMake(0, 0, tableView.bounds.size.width - 32, 50.0f);
    // MAGIC 32 for SectionIndexTitles
    
    UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease];
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
    label.font = [UIFont fontWithName:@"Courier" size:20];
    label.text = @"Section title long";
    label.textAlignment = UITextAlignmentCenter;
    label.backgroundColor = [UIColor redColor];
    
    CGSize labelSize = [label.text sizeWithFont:label.font
                              constrainedToSize:frame.size
                                  lineBreakMode:UILineBreakModeClip];
    label.frame = CGRectMake(0, 0, labelSize.width, labelSize.height);
    label.center = CGPointMake(frame.size.width/2.0f, kHeaderHeight/2.0f);
    
    label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
    

    欢迎任何想法!甚至不记得我失败的方式有多少:)

1 个答案:

答案 0 :(得分:0)

嘿,在IB中设置如下: 禁用所有自动调整功能(没有灵活的宽度,高度,也没有左,下,上,右)。

应该做的工作:)

要支持神奇的32像素,请尝试根据需要定位标签。 这意味着: 将它放在你的UIView的中心并向左移动16个像素,现在不要以编程方式改变帧,否则“精彩”的自动位置将被操纵我们真正不想要的东西:)