2016-07-29 9 views
0

Ich mache ein UITableViewControl. Ich muss textAlignment für UITableViewHeaderFooterView wie unten gezeigt setzen. Aber es funktioniert nicht.Wie setze ich textAlignment für UITableViewHeaderFooterView?

TableView control

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

Es ist zentriert. Das Label ist nicht die volle Breite des Headers. Ich schätze, Sie wollen den Text in der Mitte des Bildschirms? – KevinS

+0

Es ist zentriert. Aber jetzt möchte ich Header wie Bild setzen! kannst du mir helfen? –

Antwort

0

Wenn Sie einen Header gefüllt haben möchten Versuchen Sie durch ein gestrecktes Bild, contentView statt 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

Ich möchte gestrecktes Bild für TextLabel festlegen. Hast du irgendeine Lösung? –

+0

Vielen Dank! Es funktioniert, wenn ich CGRectMake einstelle. –

1

Erstellen Sie eine Ansicht, auf dieser Ansicht, die ein Etikett hinzufügen, und stellen Sie die Ansicht wie der Kopfsicht auf den Tisch:

self.tableView.headerView = view 
+0

Danke für Ihre Unterstützung! –

+0

ich möchte wissen, dass es funktioniert –

+0

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

0
zu verwenden

Wie von @wg_hij vorgeschlagen, können wir die benutzerdefinierte UIView als Header-Ansicht für die Tabellenansicht verwenden.

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 wird so etwas wie:

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") 
} 
} 

Mit dieser benutzerdefinierten Header Ansicht, wir etwas Look-n-Feel im Zusammenhang tun können, um!

+0

Vielen Dank für Ihre Unterstützung! –