Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Własny wygłąd TableViewCel


  • Zaloguj się, aby dodać odpowiedź
22 odpowiedzi w tym temacie

#1 darcysko

darcysko
  • 29 postów

Napisano 24 stycznia 2011 - 14:36

Witam,

ktoś może się orientuje jak zrobić mniej więcej taki wygląd dla TableView:

Dołączona grafika

Chodzi głównie o wygląd komórki i te separatory.
Będę wdzięczny za podpowiedz.

#2 danteusz

danteusz
  • 527 postów
  • SkądWrocław-Psie Pole, Wroclaw, Poland, Poland

Napisano 24 stycznia 2011 - 14:51

Najłatwiej skorzystać z Custom Cell - tworzysz klasę która dziedziczy po UITableViewCell, robisz do niej xib i możesz dowolnie zmieniać wygląd komórki

#3 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 24 stycznia 2011 - 14:51

hm, no raczej musisz ją sobie samemu narysować
albo wrzucić w nią widok.
ogólnie robisz subklasę z własną metodą rysującą.
Loading…
tutaj przykłady (w 5 jest kilka sposobów (3?) na customowy tableviewcell)

#4 darcysko

darcysko
  • 29 postów

Napisano 24 stycznia 2011 - 15:20

Najłatwiej skorzystać z Custom Cell - tworzysz klasę która dziedziczy po UITableViewCell, robisz do niej xib i możesz dowolnie zmieniać wygląd komórki


No ja tak robię, tylko nie wiem jak zrobić odstępy między komórkami i takie obramowanie.

#5 aLP

aLP
  • 89 postów
  • Skąd52.229797,21.011781

Napisano 24 stycznia 2011 - 16:09

Ja bym to zrobił tak: 1. zrób sobie tabelę i komórki przezroczyste 2 pod tabelą ustaw szare tło 3. w swojej customCell zacznij od wstawienia UIImageView 4. w UIImageView wstaw png o rozmiarze komórki w którym będzie taka komórka jak dołączyłeś, ale zamiast szarego tła dasz przezroczystość. 5. Dodaj sobie do swojego customCell co tam sobie jeszcze chcesz i gotowe Reszta to już zabawa z autosizing Tak myślę, ale mogę się mylić ;)

#6 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 24 stycznia 2011 - 16:28

fuj. o co obrazek tam dawać? wygodniej wyrysować gradient jako tło (uniwersalniej też) odstępy też przecież można sobie wyrysować, prawda? albo podzielić na sekcję, nie dawać nagłówków sekcji i ustawić odpowiednie przerwy np.

#7 aLP

aLP
  • 89 postów
  • Skąd52.229797,21.011781

Napisano 24 stycznia 2011 - 16:34

można i tak :] rozwiązań jest sporo

#8 darcysko

darcysko
  • 29 postów

Napisano 24 stycznia 2011 - 18:01

fuj.
o co obrazek tam dawać? wygodniej wyrysować gradient jako tło (uniwersalniej też)

odstępy też przecież można sobie wyrysować, prawda?
albo podzielić na sekcję, nie dawać nagłówków sekcji i ustawić odpowiednie przerwy np.


Nigdy tego nie robiłem. Możesz trochę naprowadzić.

#9 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 24 stycznia 2011 - 18:20

czego? rysowania? subklasa i nadpisanie metody drawRect
naprawdę cała masa info o tym w necie

albo po prostu tak jak tutaj: Easy Gradient Backgrounds for UITextViewCells | Undefined Value ustawić odpowiedni backgroundView

#10 darcysko

darcysko
  • 29 postów

Napisano 24 stycznia 2011 - 21:34

Dzięki, pomogło. Mam tło, obramowanie i zaokrąglone rogi, ale niestety nie umiem poradzić sobie z odstępami pomiędzy komórkami.

#11 darcysko

darcysko
  • 29 postów

Napisano 26 stycznia 2011 - 00:11

Temat zasadniczo zamknięty. Problemem jednak jest zmiana tła dla zaznaczonego elementu. Wie ktoś może jak to zrobić, bo kombinuje i kombinuje i nie wychodzi niestety. Będę wdzięczny za sugestie.

#12 aLP

aLP
  • 89 postów
  • Skąd52.229797,21.011781

Napisano 26 stycznia 2011 - 08:55

czy dobrze zrozumiałem, że chcesz zmienić kolor zaznaczenia?

#13 darcysko

darcysko
  • 29 postów

Napisano 26 stycznia 2011 - 09:19

Nie chodzi o kolor. Chciałem tło wrzucić zamiast koloru.

#14 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 26 stycznia 2011 - 11:05

przeca masz property highlighted i metodę setHighlighted:animated: w UITableViewCell więc nadpisując metodę setHighlighted:animated: możesz wywołać odrysowanie, a w drawRect sprawdzać wartość higlighted

#15 aLP

aLP
  • 89 postów
  • Skąd52.229797,21.011781

Napisano 26 stycznia 2011 - 11:07

to pewnie podobnie:
UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
...
cell.selectedBackgroundView = myBackView;
[myBackView release];
dajesz to do if (cell == nil) w cellForRowAtIndexPath

#16 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 26 stycznia 2011 - 11:16

crap, za mocno kombinowałem jak widzę ;] ale to w sumie z Buttonem... tam nie ma możliwości podstawienia View jako tło z tego co widzę (tylko obrazek? a to mnie średnio urządzało raczej... chociaż... przemyślę sprawę ;])

#17 darcysko

darcysko
  • 29 postów

Napisano 27 stycznia 2011 - 18:01

To było łatwiejsze niż myślałem. Dzięki za pomoc ;) A tak jeszcze zapytam. Wiecie może jak zrobić, aby po wejściu w "tryb edycji" UITableView w Cell pojakiła się klikalna ikona? Coś jak na screenie jaki załączyłem w pierwszym poście. Dzięki.

#18 wojtkow

wojtkow


  • 6 767 postów
  • Płeć:
  • SkądPoznań

Napisano 27 stycznia 2011 - 18:34

Musisz stworzyć
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;

zwracając odpowiedni styl - np. UITableViewCellEditingStyleDelete dla usuwania

#19 darcysko

darcysko
  • 29 postów

Napisano 27 stycznia 2011 - 20:32

Ale mnie chodzi o dodatkową ikonkę (jak ten pisak na screenie).

#20 aLP

aLP
  • 89 postów
  • Skąd52.229797,21.011781

Napisano 27 stycznia 2011 - 22:05

tu masz podmianę obrazka:
cell.editingAccessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pisak.png"]] autorelease];
albo
cell.accessoryView
w zależności od potrzeby

#21 darcysko

darcysko
  • 29 postów

Napisano 27 stycznia 2011 - 22:45

Dzięki, ale chyba nie działa tak jak chciałem. Pierwsza sprawa: rysuje mi się linią między tym "pisakiem" a ikoną do sortowania. Druga jest taka, że ten "pisak" nie jest klikalny. Znasz jakieś rozwiązanie na to?

#22 aLP

aLP
  • 89 postów
  • Skąd52.229797,21.011781

Napisano 28 stycznia 2011 - 08:40

wrzuć kod kontrolera to może w wolnych chwilach ktoś to wykmini z marszu nikt ci nie powie jak to zrobić...

#23 darcysko

darcysko
  • 29 postów

Napisano 29 stycznia 2011 - 10:58

Coś takiego mam
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        UIImage *image = [UIImage imageNamed:@"bg.png"];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        imageView.contentMode = UIViewContentModeScaleToFill;
	[imageView.layer setMasksToBounds:YES];
        self.backgroundView = imageView;
	self.editingAccessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pisak.png"]] autorelease];

        [imageView release];
    }
    return self;
}





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych