2016-07-29 55 views
0

我做了一个UITableViewControl。我需要为UITableViewHeaderFooterView设置textAlignment,如下所示。但它不起作用。如何为UITableViewHeaderFooterView设置textAlignment?

TableView control

UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; 
[header.textLabel setTextColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"button.png"]]]; 
header.textLabel.textAlignment = NSTextAlignmentCenter; 
+0

它居中。标签不是标题的全部宽度。我猜你想要在屏幕中间的文字? – KevinS

+0

它居中。但是现在,我想设置像图片一样的标题!你可以帮我吗? –

回答

0

如果你想有一个标题填通过拉伸图像,尝试使用contentView代替textLabel

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    return HEADER_HEIGHT; 
} 

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section { 

    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; 
    UIImage *originImage = [UIImage imageNamed:@"yourImage"]; 
    CGSize size = header.frame.size; 

    UIGraphicsBeginImageContext(size); 
    [originImage drawInRect:CGRectMake(0,0,size.width,size.height)]; 
    UIImage* resizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    header.contentView.backgroundColor = [UIColor colorWithPatternImage:resizedImage]; 
} 
+0

我想为textLabel设置拉伸图像。你有任何解决方案? –

+0

非常感谢!当我设置CGRectMake时,它正在工作。 –

1

创建一个视图,在此视图中添加一个标签,并设置视图上的表头视图:

self.tableView.headerView = view 
+0

感谢您的支持! –

+0

我想知道它的工作原理? –

+0

[originImage drawInRect:CGRectMake(-95,0,size.width,size.height)]; UIImage * resizedImage = UIGraphicsGetImageFromCurrentImageContext(); –

0

正如@wg_hij所建议的那样,我们可以使用自定义UIView作为表视图的标题视图。

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    let sectionInfo = fetchedResultsController!.sections! as [NSFetchedResultsSectionInfo] 
    let headerTitle = sectionInfo[section].name 

    let headerHeight:CGFloat = tableView.sectionHeaderHeight 
    let headerView = HeaderView(frame: CGRectMake(0, 0, tableView.width, headerHeight), withHeaderLable: headerTitle) 
    return headerView 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    return 40;//custom height 
} 

HeaderView将是这样的:

class HeaderView: UIView { 

var headerLbl: UILabel? 

init(frame: CGRect, withHeaderLable headerText: String) { 
    super.init(frame: frame) 
    backgroundColor = UIColor.clearColor() 
    makeUpHeaderLabel(headerText) 
} 

func makeUpHeaderLabel(lblText: String) { 
    if headerLbl == nil { 
     headerLbl = UILabel(frame: CGRectMake(0, 0, 10, 10)) 
     headerLbl!.makeRoundedRect() 
     headerLbl!.bgColorName = ColorPaletteCP1 
     headerLbl!.fontName = BHTypoMI14 
     headerLbl!.textAlignment = .Center 
     headerLbl!.baselineAdjustment = .AlignCenters 
     addSubview(headerLbl!) 
    } 
    headerLbl!.text = lblText 
    headerLbl!.sizeToFit() 
    let frame = headerLbl!.frame 
    headerLbl!.frame = CGRectMake(0, 0, frame.size.width + 32, frame.height + 8) 
    headerLbl!.center = CGPointMake(width/2, height/2) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 
} 

使用这种自定义标题视图,我们可以做一下正感觉相关的东西!

+0

谢谢你的支持! –