Eine Anzahl von S.O. Fragen zeigen eine automatische Layout-Technik die Mindestgröße von einer Ansicht erforderlich, um zu bestimmen erfordert seine Einschränkungen zu erfüllen: [header systemLayoutSizeFittingSize: UILayoutFittingCompressedSize]
Führt SystemLayoutSizeFittingSize aus: erfordern setNeedsLayout & layoutIfNeeded davor?
Bevor die systemLayoutSizeFittingSize:
Aufruf, alle Beispiele, die ich ein Layout-Update zwingen gesehen haben, wie folgt aus:
[view setNeedsLayout];
[view layoutIfNeeded];
CGFloat height = [view systemLayoutSizeFittingSize: UILayoutFittingCompressedSize].height;
Ich würde gerne wissen, wann dies wirklich notwendig ist, da es als rituelle Würze eingestreut scheint: Ich würde gerne verstehen, warum ich telefoniere, anstatt es für Glück zu tun!
Ich habe gerade systemLayoutSizeFittingSize:
in einem Code verwendet, wo ich selektiv eine Ansicht aktualisieren, die UITableView
Instanz ist tableViewHeader
(nicht Abschnitt Header), dann ändern Sie die Größe. Es scheint ohne die zusätzlichen Anrufe gut zu funktionieren. Ich habe dies in meinem 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;
}
Dank.
Ich untersuche die gleiche Sache, jemals einen Abschluss erreicht? Vielen Dank! – mikywan
:-) Nein! Ich bin mir ziemlich sicher, dass ich etwas Ähnliches gelesen habe, aber ich kann es jetzt nicht finden. Ich dachte darüber nach, ein Kopfgeld darauf zu legen, aber ich bin mir nicht sicher, ob ich mich so sehr darum kümmere. Es tut uns leid. – Benjohn