Ein Ansatz, den ich in der Vergangenheit verwendet habe, besteht darin, die Bildlaufansicht aus der enthaltenen Ansicht im Interface Builder zu ziehen und die tatsächliche Größe auf die gewünschte Größe von contentSize festzulegen.
Was an Interface Builder nicht von Natur aus offensichtlich ist, ist, dass Sie nicht zugeordnete Ansichten haben können, die in der Schreibfeder gespeichert sind, aber nicht Teil der Hauptansicht sind, für die die Schreibfeder in erster Linie bestimmt ist.
Platzieren Sie in der Ansicht, in der die Bildlaufansicht angezeigt werden soll, eine einfache UIView, die Sie als Platzhalter verwenden. (Dies ist einfach, damit Sie den Standort visuell gestalten können. Wenn Sie nur die gesamte Ansicht verwenden, können Sie diesen Schritt überspringen und das zweite Code-Snippet verwenden, das ich am Ende dieser Antwort angegeben habe.)
Anschließend können Sie die Bildlaufansicht mit Steuerelementen füllen und sie visuell so anordnen, wie Sie es möchten. Geben Sie sowohl die Platzhalter- als auch die Bildlaufansichtseigenschaften in Ihrem Ansichts-Controller an, damit Sie zur Laufzeit darauf zugreifen können.
zur Laufzeit in - (void) viewDidLoad
scrollView.contentSize = scrollView.frame.size;
scrollView.frame = placeholder.frame;
[placeholder.superview addSubView:scrollView];
[placeholder removeFromSuperview];
alternativ (wenn Sie keinen Platzhalter verwendet haben):
CGRect f = self.view.frame;
scrollView.contentSize = f.size;
f.origin.x = 0;
f.origin.y = 0;
scrollView.frame = f;
[self.view addSubView:scrollView];
Wenn Sie Ihre Bildlaufansicht im Interface Builder "verlieren" (es ist möglich, sie zu schließen, damit sie aus dem Entwurfsraster verschwindet), geraten Sie nicht in Panik. Klicken Sie einfach in der Objektliste links neben dem Entwurfsraster darauf.