Ich erstelle ein Dateneingabeformular in meiner iPhone App, und es gibt mehr Datenfelder, als auf den Bildschirm passen. Ich dachte, ich sollte sie in eine UIScrollView legen, damit der Benutzer durch das Formular scrollen kann. Was ist der beste Weg, dies in Interface Builder zu erstellen? Ich weiß, dass ich das programmatisch machen kann, aber ich würde es gerne in Interface Builder tun, wenn ich kann. Das Problem ist, Wie kann ich UILabels, UITextFields usw. aufteilen, wenn sie außerhalb des iPhone-Hauptbildschirms liegen - in dem Teil des Bildschirms, für den UIScrollView nützlich ist?
Doppelklicken Sie, um den UIScrollView
selbst in IB zu öffnen, und vergrößern Sie die Größe auf die benötigte Größe oder größer (Sie können zur Laufzeit immer kleiner werden). Dann füge einfach die Elemente hinzu.
BEARBEITEN: Funktioniert nicht - sehen Sie stattdessen hier .
Die beste Problemumgehung, die ich für dieses Problem gefunden habe (was ich für den Interface Builder als peinlich empfinde), ist folgendes:
Das ist eigentlich einfach:
Erstellen Sie eine neue View-Controller-Klasse, z. MyScrollViewController
Erstellen Sie eine neue xib mit einer UIScrollView als oberste Ansicht und legen Sie die Klasse des Dateieigentümers auf MyScrollView Controller
Setzen Sie das Ansichtsattribut des Eigentümers der Datei auf die Bildlaufansicht
Ziehen Sie den unteren Teil des Bildlauffensters, um die gewünschte Größe zu erstellen.
Positionieren Sie Ihre verschiedenen anderen UI-Elemente als Unteransichten der Bildlaufansicht
Erstellen und verbinden Sie ein IBOutlet in MyScrollViewController.h für die Bildlaufansicht, z. B.
%Vor%Fügen Sie in der viewDidLoad-Methode von MyScrollViewController die folgende Codezeile hinzu:
%Vor%Th-th-th-das ist alles Leute!
Ich hatte das gleiche Problem. Was ich getan habe, war, einen weiteren UIView hinein zu setzen und die Höhe so einzustellen, wie ich es wollte. Dann lege ich alle meine UI-Elemente darin. Dadurch können Sie die innere Ansicht nach oben und unten ziehen.
Was bei xCode5 für mich funktioniert hat (kein Storyboard, Autolayout), verwendet die 7-stufige Antwort über die Enden mit "Th-th-th-that's all people!" und Hinzufügen von zwei Schritten.
8) Ziehen Sie eine neue UIView zum Interface Builder. Nicht in die Scroll-Ansicht. Nur für sich allein. Setzen Sie all Ihre Steuerelemente / Ansichten hinein und machen Sie es so groß wie Sie möchten. Ich habe diese Ansicht als contentView verknüpft.
@property (schwach, nichtatomisch) IBOutlet UIView * contentView;
9) Dann in - (void) viewDidLoad
[self.mainScrollView addSubview: self.contentView]; [self.mainScrollView setContentSize: CGSizeMake (self.contentView.frame.size.width, self.contentView.frame.size.height)];
Nur gesagt, dass es für mich funktioniert hat.
Es gibt endlich eine vernünftige Lösung für all das und das ist eine Containeransicht innerhalb von UIScrollView zu platzieren. Da der Interface Builder den UIViewController in der Containeransicht separat anzeigt, können Sie endlich sehen, wie Ihr UIScrollView-Inhalt aussehen wird, ohne die Finger zu berühren und auf Ihrem Kopf zu stehen.
Sie müssen Ihre Inhaltsgröße noch programmgesteuert festlegen, aber zumindest können Sie jetzt visualisieren, was passiert.
Tags und Links iphone interface-builder uiscrollview uitextfield data-entry