Dynamicznie zmieniaj szerokość etykiety wewnątrz UITableViewCell
Próbuję utworzyć niestandardowy widok tabeli.
Jak widać na zdjęciu, domyślnie ustawiam szerokość etykiety na 160 punktów na boku tablicy opowieści i zmieniam szerokość w locie, gdy stół jest załadowany. Wdrażam to, modyfikując metodę delegowania „cellForRowAtIndexPath”.
W oparciu o długość daty ustawiam szerokość Label1 na maksymalne wykorzystanie nieruchomości na ekranie telefonu.
CGFloat timeStampWidth = [cell.timestamp.text sizeWithFont:cell.timestamp.font].width;
CGFloat ksCompanyNameLableMaxWidth = 235;
NSLog(@"timeStampWidth:%f", timeStampWidth);
CGSize companyNameLableSize = CGSizeMake((ksCompanyNameLableMaxWidth - timeStampWidth), cell.companyNameLabel.frame.size.height);
CGRect newFrame = cell.companyNameLabel.frame;
newFrame.size = companyNameLableSize;
cell.companyNameLabel.frame = newFrame;
Ale kiedy ładuję aplikację, wszystkie etykiety1 są ustawione jako 160 punktów, jak to zostało ustawione w serii ujęć, chociaż przez debugowanie widziałem, jak mój kod został wykonany dla każdej komórki.
Ku mojemu zdziwieniu, jeśli przewijam w dół i przewijam do tyłu ponownie. Blok kodu jest ponownie wywoływany, a etykieta jest ustawiana zgodnie z moim życzeniem.
Ponadto, jeśli przełączę się między kartami, etykieta zostanie ponownie przywrócona do stanu nienormalnego.