2015-12-03 4 views
3

В настоящее время я добавляю в свою страницу информацию о своем приложении и хочу показать номер версии приложения, расположенного в нижнем колонтитуле сгруппированного UITableView. У меня есть это отображение, но я не уверен, как его сосредоточить.Центр footer UILabel в сгруппированном UITableView - Swift

Я посмотрел на использование вида tableviewsForFooterInSection; будет ли это правильным путем, или есть более простой способ?

Большое спасибо заранее.

About screen with left aligned footer label

ответ

7

Просто просто добавить колонтитул к вашему Tableview и она будет размещена в нижней части, независимо от того, сколько разделов у вас есть

let tableViewFooter = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 50)) 
      tableViewFooter.backgroundColor = UIColor.greenColor()   
let version = UILabel(frame: CGRectMake(8, 15, tableView.frame.width, 30)) 
version.font = version.font.fontWithSize(14) 
version.text = "Version 1.x" 
version.textColor = UIColor.lightGrayColor() 
version.textAlignment = .Center; 

tableViewFooter.addSubview(version) 

tableView.tableFooterView = tableViewFooter 

Если вы хотите добавить колонтитул для каждого раздел

Создать UIView() в вашем tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? и добавьте ярлык к этому виду и центрируйте ярлык внутри него.

Пример:

func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
     let view = UIView() 

     let version = UILabel(frame: CGRectMake(8, 15, tableView.frame.width, 30)) 
     version.font = version.font.fontWithSize(14) 
     version.text = "Version 1.x" 
     version.textColor = UIColor.lightGrayColor() 
     version.textAlignment = .Center; 

     view.addSubview(version) 

     return view 
    } 
+0

Вышеприведенные работает хорошо, но для учета центрирования текста на изменения ориентации необходимо включить следующее: version.autoresizingMask = [.FlexibleWidth, .FlexibleLeftMargin, .FlexibleRightMargin] –

+1

Спасибо очень! Он отлично работает! –

1

Hm вы идея хорошо этот пример кода поможет вам сделать это правильно.

- (UIView *) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    static UIView *footerView; 

    if (footerView != nil) 
     return footerView; 

    NSString *footerText = NSLocalizedString(@"Some Display Text Key", nil); 

    // set the container width to a known value so that we can center a label in it 
    // it will get resized by the tableview since we set autoresizeflags 
    float footerWidth = 150.0f; 
    float padding = 10.0f; // an arbitrary amount to center the label in the container 

    footerView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, footerWidth, 44.0f)]; 
    footerView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

    // create the label centered in the container, then set the appropriate autoresize mask 
    UILabel *footerLabel = [[[UILabel alloc] initWithFrame:CGRectMake(padding, 0, footerWidth - 2.0f * padding, 44.0f)] autorelease]; 
    footerLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 
    footerLabel.textAlignment = UITextAlignmentCenter; 
    footerLabel.text = footerText; 

    [footerView addSubview:footerLabel]; 

    return footerView; 
}