2016-05-03 7 views
0

Ich versuche, einen View-Controller mit zwei Ansichten über sie zu schaffen, die enter image description hereWie kann ich einen Bildschirm machen, die zwei Ansichten den Bildschirm abdeckt und nicht überlappende

enter image description here

genau wie in der IB sieht

Aber sie verhalten sich nur auf dem iPhone 5s In den anderen Fällen sieht es so aus, wie es auf dem Bild im Querformat gezeigt wird. Ich verwende Größenklassen, um die Einschränkungen für verschiedene Bildschirmausrichtungen festzulegen.

enter image description here

Und das ist so, wie es in iPhone 6s und enter image description here

Antwort

0

So schien das Problem zu sein, dass iPhones früher als iPhone 6+ wCompact hCompact Größenklasse für Landschaft haben. Und Sie sollten daran denken, keine Größenklassen wie wCompact hAny zu verwenden, da sie diese kompakte Größenklasse überschreiben.

Also, eigentlich, was Sie in dieser Situation brauchen, ist 3 Größenklassen zu erstellen: wCompact hRegular - alle Porträts wCompact hCompact - iPhones früher als 6+ wRegular hCompact - alle anderen

1

sieht Jeder/Compact bedeutet jedes Telefon mit Compact Breite, die die iPhones kleiner als 6+ ist. Sie müssen die Einschränkungen für Regular/Compact festlegen, um Einschränkungen für iPhones außer 6+ im Hochformat festzulegen.

+0

ich tat, aber Es half nicht (( – AOY

+0

) Was ist, wenn Sie die Einschränkungen für jede Größe Klasse entfernen, die Any als Breite oder Any als Höhe hat? Nur die richtig definierten? – choli

0

Sie sollten wie Einschränkungen geben,

top, bottom, leading and trailing sowohl Ansicht.

dann wählen Sie beide Ansichten und geben Sie equal height Einschränkung und Sie erhalten das gewünschte Ergebnis.

können Sie es in any any geben. es wird für jede Orientierung funktionieren.

Hope this :)

+0

Ich brauche diese Ansichten zu einer unter einem anderen im Hochformat und speziell für iPad so irgendwelche wird nicht helfen (( Ich benutze solche Einschränkungen, aber sie funktionieren nicht ((( – AOY

+0

) Es ist nicht obligatorisch, irgendwelche zu halten. Ich denke, dass diese Einschränkungen in immer funktionieren y Größenklasse. Versuch es. – Lion

+0

das Problem ist, dass sie einfach nicht funktionieren (( ) Ich kann Ihnen den Quellcode senden, wenn Sie wünschen – AOY

1

Diese Art der Sache hilft, ist viel leichter mit UIStackView.

  1. Wählen Sie Ihre zwei Ansichten.
  2. Klicken Sie auf das Symbol unten rechts, um eine UIStackView um sie herum zu erstellen.
  3. Legen Sie die neue UIStackView durch Ausrichtung auf horizontal oder vertikal fest.
  4. In die umschließende Ansicht stecken. Und du bist fertig!

Es gibt eine good tutorial here; Ich empfehle dringend, dass Sie etwas Übung mit dem Einrichten von Dingen mit Stack-Ansichten, bevor Sie die Dinge auf die harte Tour machen.

+0

Vielen Dank. Ich dachte darüber nach, aber ich bin besorgt, dass nur von iOS 9.0 verfügbar ist 15% der Geräte laufen auf früheren Versionen von – AOY

+1

Klingt richtig, aber wie viele dieser 15% werden Ihr Produkt kaufen? Für die meisten Leute ist die Unterstützung von etwas anderem als dem aktuellen Betriebssystem die zusätzliche Entwicklung/Test/Unterstützung nicht wert Besonders an diesem Punkt des Zyklus, in dem OS 10, oder iOS X, oder was auch immer sie es nennen, wird in den nächsten Wochen enthüllt werden ... –

+0

Danke für das) Ich werde tun, was Sie vorgeschlagen haben) – AOY

0

Fügen Sie diese auf dem viewDidLoad Methode Ihres Viewcontroller

UIView *firstView = [[UIView alloc] init];  
self.navigationController.navigationBar.translucent = false; 
firstView.backgroundColor = [UIColor redColor]; 

firstView.translatesAutoresizingMaskIntoConstraints = false; 
[self.view addSubview:firstView]; 
    NSLayoutConstraint *topFirstViewYConstraint = [ 

NSLayoutConstraint constraintWithItem: Firstview-Attribut: NSLayoutAttributeTop relatedBy: NSLayoutRelationEqual toItem: self.view Attribut: NSLayoutAttributeTop Dimension: 1.0f Konstante: 0.0

];

NSLayoutConstraint * centerFirstViewHeightConstraint = [ NSLayoutConstraint constraintWithItem: Firstview Attribut: NSLayoutAttributeHeight relatedBy: NSLayoutRelationEqual toItem: Selbst.Ansicht Attribut: NSLayoutAttributeHeight Multiplikator: 0.5f Konstante: 0.0 ];

NSLayoutConstraint centerFirstViewWidthConstraint * = [ NSLayoutConstraint constraintWithItem: Firstview attribute: NSLayoutAttributeWidth relatedBy: NSLayoutRelationEqual toItem: self.view attribute: NSLayoutAttributeWidth Dimension: 1.0f Konstante: 0.0f]; [super.view addConstraints: @ [topFirstViewYConstraint, centerFirstViewHeightConstraint, centerFirstViewWidthConstraint]];

UIView *secondView = [[UIView alloc] init]; 
secondView.backgroundColor = [UIColor greenColor]; 
secondView.translatesAutoresizingMaskIntoConstraints = false; 
[self.view addSubview:secondView]; 
NSLayoutConstraint *topSecondViewYConstraint = [ 

NSLayoutConstraint constraintWithItem: secondView attribute: NSLayoutAttributeTop relatedBy: NSLayoutRelationEqual toItem: Firstview attribute: NSLayoutAttributeBottom Dimension: 1.0f Konstante: 0.0f]; NSLayoutConstraint centerSecondViewHeightConstraint * = [ NSLayoutConstraint constraintWithItem: secondView attribute: NSLayoutAttributeHeight relatedBy: NSLayoutRelationEqual toItem: self.view attribute: NSLayoutAttributeHeight Dimension: 0,5f Konstante: 0,0 ]; NSLayoutConstraint centerSecondViewWidthConstraint * = [ NSLayoutConstraint constraintWithItem: secondView attribute: NSLayoutAttributeWidth relatedBy: NSLayoutRelationEqual toItem: self.view attribute: NSLayoutAttributeWidth Dimension: 1.0f Konstante: 0.0f]; [super.view addConstraints: @ [topSecondViewYConstraint, centerSecondViewHeightConstraint, centerSecondViewWidthConstraint]];

Verwandte Themen