Wie richte ich UIScrollView im Interface Builder mit UI-Elementen außerhalb der Hauptansicht des iPhone ein?

8

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?

    
Jason 11.08.2010, 13:45
quelle

7 Antworten

0

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 .

    
jrtc27 11.08.2010, 13:53
quelle
7

Die beste Problemumgehung, die ich für dieses Problem gefunden habe (was ich für den Interface Builder als peinlich empfinde), ist folgendes:

  1. Platzieren Sie eine UIView "container" in UIScrollView, legen Sie die Größe des Containers UIView mit dem Inspector auf den benötigten Wert (z. B. 320 x 1200) fest, und fügen Sie Ihren Inhalt in dieser Containeransicht hinzu. (Ihre Schaltflächen, Textfelder usw.).
  2. Setzen Sie die contentSize für die UIScrollView im Code so, dass sie mit der Größe Ihres Containers UIView übereinstimmt. irgendwo in viewDidLoad zum Beispiel (z. B. scrollView.contentSize = containerView.frame.size;)
  3. Um den Inhalt außerhalb der Scrollview-Grenzen im Interface Builder zu ändern, müssen Sie die Containeransicht jedes Mal außerhalb der Bildlaufansicht ziehen, Ihre Änderungen vornehmen und dann Ihre Containeransicht zurück in UIScrollView ziehen und erstellen.
user637394 03.05.2012 07:37
quelle
5

Das ist eigentlich einfach:

  1. Erstellen Sie eine neue View-Controller-Klasse, z. MyScrollViewController

  2. Erstellen Sie eine neue xib mit einer UIScrollView als oberste Ansicht und legen Sie die Klasse des Dateieigentümers auf MyScrollView Controller

  3. fest
  4. Setzen Sie das Ansichtsattribut des Eigentümers der Datei auf die Bildlaufansicht

  5. Ziehen Sie den unteren Teil des Bildlauffensters, um die gewünschte Größe zu erstellen.

  6. Positionieren Sie Ihre verschiedenen anderen UI-Elemente als Unteransichten der Bildlaufansicht

  7. Erstellen und verbinden Sie ein IBOutlet in MyScrollViewController.h für die Bildlaufansicht, z. B.

    %Vor%
  8. Fügen Sie in der viewDidLoad-Methode von MyScrollViewController die folgende Codezeile hinzu:

    %Vor%

Th-th-th-das ist alles Leute!

    
northernman 31.12.2011 02:16
quelle
1

Richten Sie "Content Insets" von "Scroll View Size" im "Size Inspector" ein: Bottom = YourFrameHeight - ScreenHeight. Es erlaubt Ihnen, in Bereichen von oben nach unten, von unten nach oben in Ihrem UIScrollView

zu scrollen     
MikeR 16.11.2011 07:55
quelle
0

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.

    
Matt Williamson 11.08.2010 13:59
quelle
0

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.

    
Jeff 18.06.2014 17:19
quelle
0

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.

    
arcady bob 20.07.2016 23:09
quelle