2010-11-17 24 views
6

Potrzebuję dodać fazę do mojego UITableViewCell (biała linia na górze, ciemna linia na dole). Mam już CAGradientLayer dodane jako wyeksponowanie mojego cell.layer. Niestety nie mogę użyć UIImageView jako tła dla moich komórek, więc trzeba to zrobić w kodzie. Jakieś sugestie? Dzięki!Jak dodać skos do UITableViewCell

To jest kod, który mam teraz dla mojego tła komórki.

CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
gradientLayer.frame = cell.frame; 
gradientLayer.colors = [NSArray arrayWithObjects: 
    (id)[[UIColor colorWithRed:0.988 green:0.988 blue:0.988 alpha:1.0] CGColor], 
    (id)[[UIColor colorWithRed:0.9294 green:0.9294 blue:0.949 alpha:1.0] CGColor], 
    nil]; 
[cell.layer insertSublayer:gradientLayer atIndex:0]; 

To wygląda w porządku, ale chciałbym mieć 1 piksel ciemną linię na dole i 1 piksela białej linii na górze, aby zakończyć wygląd.

Odpowiedz

6

Można i prawdopodobnie należy użyć UIImageView jako tła komórki. To, co obecnie robisz, jest całkiem błędne.

A UITableViewCell składa się z kilku widoków w hiarchii, ważne jest, aby wiedzieć, w którym miejscu powinny znajdować się Twoje poglądy. Ta hierarchia jest następująca:

  • UITableViewCell - Nigdy nie dotykać tego
    • backgroundView - wymienić ustawić niestandardowe tła dla wszystkich wierszy.
    • selectedBackgroundView - Zastąp, aby ustawić niestandardowe tło dla wybranych/wyróżnionych rzędów.
    • contentView - Nie ustawiaj tego, ale nie krępuj się, dodaj dowolną liczbę subskrybentów, jak chcesz.
      • titleLabel
      • detailTitleLabel
      • imageView
      • Twoje własne poglądy
    • accessoryView

Od początku nie jest oczywiste, jak wymienić backgroundView i selectedBackgroundView. Samo UITableView ustawi je automatycznie po zwróceniu komórki z metody źródła danych . Oznacza to, że wszystko, co tu ustawisz, będzie zawsze przesłonięte.

Sztuką jest wdrożenie metody delegatów -[tableView:willDisplayCell:forRowAtIndexPath:] i ustawienie własnego tła tutaj.

Wszystko to jest całkiem dobrze wyjaśnione w Table View Programming Guide.

+0

PeyloW, wielkie dzięki! Zmienię odpowiednio mój kod, doceniam informacje! – NSAlexC

+0

PeyloW, dzięki, że działało świetnie. Czytam docenta do jabłka i czuję się o wiele lepiej. Dzięki jeszcze raz! – NSAlexC

+0

@ziggie: Moja przyjemność - nie zapomnij oznaczyć odpowiedzi jako zaakceptowanej po rozwiązaniu problemu.Pomaga innym znaleźć rozwiązanie szybciej i pomaga zmotywować każdego, kto odpowie. – PeyloW

1

Spójrz na this link. Możesz zignorować efekt połysku, ale poza tym myślę, że tego właśnie chcesz.

+0

Skałasz slice! To działa teraz. – NSAlexC

+0

To łącze nie działa. –

+0

Zaktualizowany link, aby być (miejmy nadzieję) bardziej trwały. – slycrel