2011-09-08 13 views
5

Zajmuję się tworzeniem jednej aplikacji, w której chcę utworzyć efekt cienia podobny do pokazanego na poniższym obrazie u dołu uitableviewcell.Jak stworzyć efekt cienia w uitableviewcell?

enter image description here

W jaki sposób można to zrobić? Dowolną samouczka lub przykładowy kod? Sprawdziłem http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html, , http://www.touchthatfruit.com/?tag=uitableview i kilka innych. Ale mają one cień na dole uitableview z tą samą wysokością. I jak do dodać cień na bocznych krawędziach każdej sekcji zawierającej datę (nie całą tabelę). Mogę utworzyć cień na dole. Ale co z bocznymi krawędziami ostatniej komórki u ytecznej z ka dej sekcji.i jednym ze sposobów jest utworzenie obrazu i ustawienie go jako tła tableviewcell. Ale jak zmienić rozmiar obrazu i czy będzie on wyglądać prawidłowo, poniewa ka da sekcja ma dynamiczny liczba wpisów. Jedna sekcja ma tylko jedną pozycję, a druga może zawierać 15 lub więcej pozycji (tutaj obraz dotyczy całej sekcji zawierającej datę). może mieć osobny obrazek tylko dla ostatniej tabeli widoku każdej sekcji.To jest wiem. czy istnieje lepsze podejście lub programowo?

Odpowiedz

0

Można zwrócić na poniższy link w celu uzyskania efektu cienia w UITableView, który pozwoli Ci

try this

pomóc fundamentalny kawałek widzenia jest to warstwa, która jest CALayer. Można uzyskać do niego dostęp za pośrednictwem właściwości warstwy widoku:

myView.layer

W CALayers dokumentacji mają kilka właściwości, które kontrolują cień. Powinieneś być w stanie powiedzieć poziomowi paska nawigacji, aby rzucił cień. Wraz z warstwami innych treści, które chcesz rzucić cień.

myView.layer.shadowOffset 

myView.layer.shadowRadius 

Musisz mieć pewność, aby dodać ramy QuartzCore do projektu, aby uzyskać dostęp do tej właściwości

+0

Jak już wspomniano w pytaniu, że to nie pomaga mi – Bhoomi

+0

sprawdzić mój kod aktualizacji –

+0

Znam wszystkie te rzeczy. ale to, co mówię, polega na tym, że nie jestem w stanie stworzyć cienia na pokazany obraz. – Bhoomi

0

Czy każda sekcja zawsze taki sam rozmiar? Jeśli tak, to czy nie podklaskujecie UITableViewCell, aby narysować przedmiot podobny do notatnika z dołączonym cieniem?

Możesz także dodać przezroczysty UIImageView przez UITableView, aby uzyskać przyciemnione rogi.

EDIT:

Efekt ten jest nieco skomplikowane, masz zamiar przyjrzeć się, jak korzystać z UIBezierPaths (http://developer.apple.com/library/IOS/#documentation/UIKit/ Odniesienie/UIBezierPath_class/Reference/Reference.html).

Górną częścią może być obraz (efekt pierścieni i tabulatora). Następnie można narysować resztę komórki w funkcji drawRect. (Jest to bardziej wydajne niż użycie właściwości cienia w warstwie, która jest ważna w UITableViewCell).

Będziesz chciał nadpisać klasę UITableViewCell i zaimplementować niestandardową funkcję drawRect:

Oto niektóre kodu do należy zacząć:

// Only override drawRect: if you perform custom drawing. 
    // An empty implementation adversely affects performance during animation. 
    - (void)drawRect:(CGRect)rect 
    { 

     /* Draw top image here */ 

     //now draw the background of the cell. 
     UIBezierPath *path1 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 320, 50)]; 
     [[UIColor grayColor] set]; 
     [path1 fill]; 

     UIBezierPath *path2 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 52, 320, 50)]; 
     [[UIColor whiteColor] set]; 
     [path2 fill]; 

     UIBezierPath *path3 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 104, 320, 50)]; 
     [[UIColor grayColor] set]; 
     [path3 fill]; 

     UIBezierPath *path4 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 156, 320, 50)]; 
     [[UIColor whiteColor] set]; 
     [path4 fill]; 

     //and so on... 

     //Let's draw the shadow behind the last portion of the cell. 
     UIBezierPath *shadow = [UIBezierPath bezierPathWithRect:CGRectMake(0, 208, 320, 52)]; 
     [[UIColor darkGrayColor] set]; 
     [shadow fill]; 

     //Finally, here's the last cell with a curved bottom 
     UIBezierPath *path5 = [UIBezierPath bezierPath]; 
     [path5 moveToPoint:CGPointMake(0, 208)]; 
     [path5 addLineToPoint:CGPointMake(320, 208)]; 
     [path5 addLineToPoint:CGPointMake(320, 258)]; 
     [path5 addCurveToPoint:CGPointMake(0, 258) controlPoint1:CGPointMake(160, 254) controlPoint2:CGPointMake(160, 254)]; 
     [[UIColor grayColor] set]; 
     [path5 fill]; 
    } 

Kod nie jest całkiem przeciągnij i upuść, trzeba jeszcze dodać białe linie, naprawić niektóre rozmiary i dostrojenia ostatnią komórkę i cień do być w porządku. Ale powinno wystarczyć, aby zacząć.

Pozdrawiam!

+0

tutaj każdy rozmiar sekcji nie jest taki sam. Jest inny i dynamiczny również. – Bhoomi

+0

zobacz zaktualizowane pytanie – Bhoomi

0

Spójrz na moje answer na podobne pytanie, to może być możliwe rozwiązanie twojego problemu! Zmieniając ścieżkę cienia, powinieneś być w stanie osiągnąć pożądany efekt cienia!

Powiązane problemy