2016-04-12 42 views
14

Mam tableview z komórką prototypową, w komórce Mam podgląd obrazu i tekst poniżej. Etykieta tekstowa to jeden znak w komórce prototypowej, ale czasami jest to więcej niż jedna linia, ładuję dane do widoku tabeli po wywołaniu serwera. Etykieta w serii ujęć Linie są ustawione na 0, a podział na wiersze na zawijanie wierszy. Próbowałem również http://candycode.io/automatically-resizing-uitableviewcells-with-dynamic-text-height-using-auto-layout/Swift Dynamiczna wysokość komórki tabeli

, ale bez efektu. Jeśli używam Using Auto Layout in UITableView for dynamic cell layouts & variable row heights wszystko działa, ponieważ tekst etykiety jest wstępnie zdefiniowany, ale ładuję dane z serwera i ponownie ładuję tableView po wywołaniu interfejsu API, a następnie etykieta to tylko jedna linia.

+0

Czy etykieta posiada dolną ograniczenie do tableViewCell? –

+0

tak, używam sugerowanych ograniczeń, czy powinienem je usunąć? – SpyZip

+1

patrz http://stackoverflow.com/questions/36437861/what-constraints-would-prevent-my-uiviews-z-stosowaniem-na-top-nie-ne-other/36438009#36438009 – Scriptable

Odpowiedz

22

Należy użyć UITableViewAutomaticDimension zapewnia rozwiązanie do wyświetlania zawartości dynamicznej.

skorzystać z poniższego kodu w viewDidLoad:

tableView.estimatedRowHeight = YourTableViewHeight 
tableView.rowHeight = UITableViewAutomaticDimension 

Read more from here

Nadzieję, że to pomaga. :)

+1

ten działa z autolayout! Dodam również, że "tableView.estimatedRowHeight = xxx" jest potrzebny, aby działało, nie jest opcjonalne. – smukamuka

12

upewnić UILabel wysokość ograniczenie nie będzie stała, jeśli stała musiał ustawić Relacja większą lub równą z atrybutu inspektora

upewnić UITableViewestimate wysokość wiersza ustawione jak na swoje.

self.TableName.estimatedRowHeight = 85 

and write in UITableViewcell class 


Cell.lbl_name.sizeToFit() 


Cell.lbl_name.numberOfLines = 0 

upewnić się, że metoda UITableViewDelegate

func tableView(tableView: UITableView, 
    heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 

return UITableViewAutomaticDimension 
}