Liczba S.O. Pytania pokazać technikę autolayout celu określenia minimalnej wielkości wymaganej przez myślą wymaga, aby spełniać swoje ograniczenia: [header systemLayoutSizeFittingSize: UILayoutFittingCompressedSize]
Czy systemLayoutSizeFittingSize: wymagają setNeedsLayout i layoutIfNeeded przed nim?
Przed dokonaniem połączenia systemLayoutSizeFittingSize:
, wszystkie przykłady Widziałem wymuszenie aktualizacji układu, tak:
[view setNeedsLayout];
[view layoutIfNeeded];
CGFloat height = [view systemLayoutSizeFittingSize: UILayoutFittingCompressedSize].height;
Chciałbym wiedzieć, kiedy jest to rzeczywiście konieczne, ponieważ wygląda jak posypane rytuałem: Chciałbym zrozumieć, dlaczego dzwonię, zamiast robić to na szczęście!
Właśnie użyłem systemLayoutSizeFittingSize:
w jakimś kodzie, w którym selektywnie aktualizuję widok, który jest tableViewHeader
instancji UITableView
(nie nagłówek sekcji), a następnie zmieniaj rozmiar. Wydaje się działać dobrze bez dodatkowych połączeń. Mam to w moim viewDidLoad
:
{
// Remove the view that we don't want.
[self.autoPopulateView removeFromSuperview];
// Resize the table's header view now the unwanted view is removed.
UIView *const header = self.tableView.tableHeaderView;
// Don't explicitly layout.
// [header setNeedsLayout];
// [header layoutIfNeeded];
CGFloat height = [header systemLayoutSizeFittingSize: UILayoutFittingCompressedSize].height;
CGRect frame = header.frame;
frame.size.height = height;
header.frame = frame;
}
Dzięki.
Prowadzę dochodzenie w tej samej sprawie, ale nigdy nie doszedłem do wniosku? Dzięki! – mikywan
:-) Nie! Jestem prawie pewien, że przeczytałem coś pokrewnego, ale nie mogę go teraz znaleźć. Zastanawiałem się nad nagraniem, ale nie jestem pewien, czy tak bardzo mi na tym zależy. Przepraszam. – Benjohn