2011-03-10 12 views
6

Używam UITextView wewnątrz tableView komórki w celu edycji tekstu.UITextView w TableCell, Jak ustawić poprawną szerokość uniwersalnej aplikacji

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 270, 24)]; 

[cell addSubview:textName]; 
[textName release]; 

} 

Działa to, ale podczas uruchamiania go na iPadzie nie jest prawidłowe.

Próbowałem ustalić szerokość komórki za pomocą cell.contentView.frame.size.width

ale to zawsze zwraca 320,0 zarówno dla iPhone i iPad

także na iPadzie gdy jest w krajobrazie tryb nie powinien być większy niż szerokość komórki?

Teo

Odpowiedz

2

Idealnie chcesz utworzyć niestandardowy UITableViewCell i dostosować rozmiary kontrolne/pozycje w layoutSubviews.

Jeśli masz zamiar dodać kontrolę w tableView:cellForRowAtIndexPath:, to można uzyskać szerokość od Tableview samego:

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width-50, 24)]; 
1
  1. Ogniwo iPad jest zmieniany, gdy jest on dodawany do stołu, po dokonaniu funkcja zwraca. Jeśli chcesz zmienić rozmiar pola tekstowego z komórką, możesz zrobić coś takiego, jak textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight.
  2. Powinieneś dodać niestandardowe widoki do contentView (tj. [cell.contentView addSubview:textName]). Widok zawartości automatycznie zmniejsza się, aby obsługiwać tryb edycji, między innymi.

Tworzenie podklas UITableViewCell jest nieco przesadzone, jeśli chcesz zmienić układ - mam wrażenie, że automatyczne skalowanie jest szybsze niż ręczne określanie wielkości przy użyciu layoutSubviews.

Powiązane problemy