2009-05-18 8 views
6

Jak zmieścić UIImage w komórce UITableView, UITableViewCell (?).Jak zmienić rozmiar obrazu, aby dopasować komórkę UITableView?

Czy ci addSubview do cell czy jest jakiś sposób, aby zmienić rozmiar cell.image lub UIImage zanim zostanie on przypisany do cell.image?

Chcę zachować domyślny rozmiar komórki (bez względu na to, kiedy jest uruchamiany z zerowym prostokątem) i chciałbym dodać do każdego wpisu ikonę podobną do obrazków. Obrazy są nieco większe niż rozmiar komórki (rozmiar wiersza tabeli).

Myślę, że kod wygląda następująco (od góry głowy):

UIImage * image = [[UIImage alloc] imageWithName:@"bart.jpg"]; 
cell = ... dequeue cell in UITableView data source (UITableViewController ...) 
cell.text = @"bart"; 
cell.image = image; 

Co muszę zrobić, aby zmienić rozmiar obrazu do rozmiaru komórek? Widziałem coś takiego:

UIImageView * iview = [[UIImageView alloc] initWithImage:image]; 
iview.frame = CGRectMake(...); // or something similar 
[cell.contentView addSubview:iview] 

Powyższy doda obraz do komórki i mogę obliczyć wielkość, aby zmieścił się jednak:

  1. Nie jestem pewien, czy istnieje lepszy sposób, czy to nie jest zbyt duży napływ do dodać UIImageView tylko, aby zmienić rozmiar cell.image?
  2. Teraz moja etykieta (cell.text) musi być przeniesiony, ponieważ jest zasłonięte przez obraz, Widziałem rozwiązanie, w którym po prostu dodać tekst jako etykieta:

Przykład:

UILabel * text = [[UILable alloc] init]; 
text.text = @"bart"; 
[cell.contentView addSubview:iview]; 
[cell.contentView addSubview:label]; 
// not sure if this will position the text next to the label 
// edited original example had [cell addSubview:label], maybe that's the problem 

Czy ktoś może wskazać mi właściwy kierunek?

EDIT: Doh [cell.contentview addSubview:view] nie [cell addSubview:view] może mam patrzeć na to:

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = ...; 
    CGRect frame = cell.contentView.bounds; 
    UILabel *myLabel = [[UILabel alloc] initWithFrame:frame]; 
    myLabel.text = ...; 
    [cell.contentView addSubview:myLabel]; 
    [myLabel release]; 
} 
+0

Nie ma innych sugestii? – stefanB

Odpowiedz

2

This site posts code na przeskalowanie do UIImage*. Możesz grać z przeskalowaniem, aby uzyskać prawidłową proporcję dla używanego UIImage*, aby zmniejszyć skalę.

+0

Interesujące, będę wyglądać, dziękuję za link – stefanB

1

Jeśli masz dostęp do centrum Apple Devloper, znajduje się film o skalowaniu obrazów dla widoków tabel. Jest bardziej skupiony na problemach z wydajnością i dużo mówi o wątkach, ale pokazuje przykładowy kod służący do zmiany rozmiaru obrazów.

Nazwa wideo: "Skuteczne tworzenie aplikacji na telefon iPhone - część 2" około 30 minut w.

+0

dzięki, sprawdzę to – stefanB