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.

questionAnswers(3)

yourAnswerToTheQuestion