2010-03-05 19 views
9

'da bölüm başlığının rengini değiştirme oldukça basit bir soruya (umarım öyle) sahibim. Bölüm üstbilgisi rengini varsayılan maviden siyaha şeffaf bir UITable görünümünde nasıl değiştiririm? Şimdiden teşekkürler.UITableview

+1

benzer bir soru: http://stackoverflow.com/questions/813068/uitableview-change-section-header -renk – nylund

cevap

18

Eğer UITableViewDelegate protokolünde bu yöntemi uygulamak gerekir: Burada

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

documentation

bağlantısıdır ... ve (kendi renginde alt) böyle bir şey yapmak:

UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 22)] autorelease]; 
[sectionView setBackgroundColor:[UIColor blackColor]]; 
return sectionView; 

Renkleri veya benzerlerini değiştirmek için tamsayı bölümünü de kullanabilirsiniz. Bölümler için varsayılan yüksekliğin 22 olduğunu düşünüyorum, ama ne istersen onu yapabilirsin. Sorduğun şeyden mi bahsettin? Bu yardımcı olur umarım.

+0

Teşekkürler, IB'de siyah renge geçmek için bir tür tetikleyici olacağını düşündüm. Ama neyse, teşekkürler. –

+1

Ama lütfen, bu görünümleri önbelleğe alın. UIKit'te, tablonun kaydırıldığı zaman başlık görünümleri sorulmasına neden olan bir hata vardır, böylece kaydırma sırasında her bir piksel-ofset için bu yöntem çağrılacaktır. 22px gerçekten varsayılan yüksekliktir. – Joost

+1

Merhaba, kaydırma işlemi gerçekleştiğinde bu yöntemin çağrıldığını anlıyorum ... bu şekilde, gereksiz görünümlerin oluşturulmasını vb. Önlemek için bunu nasıl önleyebiliriz? Gönderinize bir yorum veya güncelleme gönderebilecekseniz çok yardımcı olacak. teşekkür ederim – Pavan

0
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    { 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,tableView.bounds.size.width, 30)]; 
    if (section == 0) 
    [headerView setBackgroundColor:[UIColor redColor]]; 
    else 
    [headerView setBackgroundColor:[UIColor clearColor]]; 
    return headerView; 
    } 
20

Bu eski bir sorudur, ancak yanıtın güncellenmesi gerektiğini düşünüyorum.

Bu yöntem kendi özel görünümlerinizi tanımlamayı içermez.
iOS 6 ve üzeri sürümlerde, arka plan rengini ve metin rengini

- (void)tableView:(UITableView *)tableView 
     willDisplayHeaderView:(UIView *)view 
     forSection:(NSInteger)section
temsilci yöntemini tanımlayarak kolayca değiştirebilirsiniz. Örneğin

: İşte benim görevinden çekildi

 
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section 
{ 
    // Background color 
    view.tintColor = [UIColor blackColor]; 

    // Text Color 
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; 
    [header.textLabel setTextColor:[UIColor whiteColor]]; 

    // Another way to set the background color 
    // Note: does not preserve gradient effect of original header 
    // header.contentView.backgroundColor = [UIColor blackColor]; 
} 

: Burada https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/