2017-11-06 11 views
0

Ich habe eine alte Legacy-App, die nicht Storyboards verwendet. Alles wird programmgesteuert hinzugefügt und konfiguriert. Ich habe eine UIButton Constraints angepasst, um auf dem iPhone X unten auf dem Bildschirm zu sitzen. Ich bemerkte, dass die Schaltfläche nicht mehr auf Berührungsereignisse reagiert und sobald ich die Hintergrundfarbe meiner Ansicht auf Gelb setzte, bemerkte ich, dass die Schaltfläche außerhalb der Grenzen der Ansicht war es gehört.
Ich habe mehrere Dinge versucht, um die Ansicht zu erweitern, um den Bildschirm zu füllen, aber nichts scheint zu funktionieren. Ich stelle die Höhe der Ansicht ein, setze den Content-Modus ohne Erfolg auf Aspect Fill und Scale to Fill.UIView Höhe nicht für iPhone X erweitern

[self.view setBackgroundColor:[UIColor yellowColor]]; 
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 

Ich habe versucht, den Rahmen der Ansicht auf die Grenzen des Hauptbildschirms zu setzen. Das hat nicht funktioniert.

CGRect frame = [[UIScreen mainScreen] bounds]; 
self.view.frame = frame; 

Ich habe versucht, eine Höhe Einschränkung für die Hauptansicht und das hat nicht funktioniert. Ich bin mir nicht sicher, ob ich das richtig gemacht habe.

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view 
                   attribute:NSLayoutAttributeHeight 
                   relatedBy:NSLayoutRelationEqual 
                   toItem:nil 
                   attribute:NSLayoutAttributeNotAnAttribute 
                  multiplier:1 
                   constant:812]]; 

Kann mir jemand sagen, was ich falsch mache?

UIView not full screen

+0

Ich vermute, es hat etwas mit Sicherheitsbereich zu tun. Verbessere auch deine App mit Storyboard. – GeneCode

+1

Haben Sie versucht, Ihre Einschränkungen in Bezug auf den sicheren Bereich festzulegen? –

+1

Es sieht so aus, als ob Ihre Ansicht nicht den Rahmen erhält. Setzen Sie den Rahmen Ihrer Ansicht in viewDidAppear und ändern Sie die Einschränkung in didLayoutSubviews. – Sunny

Antwort

1

diese Kontrollen

  1. Do Ist rootViewController ‚s Frameset als [[UIScreen mainScreen] bounds] in didFinishLaunchingWithOptions von AppDelegate? So etwas wie dieses

    self.window.rootViewController.view.frame = [[UIScreen mainScreen] Schranken]];

  2. Überprüfen Sie, ob der Rahmen UIWindow auf mainScreen Grenzen gesetzt ist.

    self.window.frame = [[UIScreen mainScreen] bounds]

  3. Prüfen, ob automatischen Layout Zwänge gebrochen werden durch Aktivierung Constraint Fehler Breakpoint-

  4. Überprüfen Sie, ob die Start-Taste ein Subview der Hauptansicht des Viewcontroller ist.
+0

Einstellung von self.window.frame = [[UIScreen mainScreen] Grenzen]]; behebt das Problem – ijason03

1

toItem:nil sollte die Ansicht, die Sie es zB nach ... beschränken wollen, es ist superview .... das viewConstraint legt die Höhe dieser Ansicht zu 812.0

Sie müssen NSLayoutAttributeNotAnAttribute ändern zu NSLayoutAttributeHeight und toItem-self.view.superview oder was auch immer view mögen Sie es ... binden und verändern 812 zu 0.0

Ich werde fragen, aber ... ist self.view die viewControllersview? Sie sollten nicht seine frame in irgendeiner Weise setzen müssen ... es sei denn, die viewController enthalten ist er automatisch den gesamten Bildschirm nehmen sollte, wie es bounds ist

+0

Ja self.view ist die View-Controller-Ansicht. Ich musste den Rahmen vorher nicht einstellen. Dies begann erst, als ich mit dem iPhone X-Simulator begann. Ich werde versuchen, Ihre Vorschläge später heute – ijason03

+0

Ich würde vermuten, es gibt ein anderes Problem, das verursacht die vc.view nicht Fullscreen anzuzeigen – Magoo

+0

Ich versuchte Ihre Constraint-Vorschlag, aber es hat nicht funktioniert. Merkwürdiges Ding ist, wenn ich self.view.superview.frame überprüfe, sein Set zu x = 0, Y = 0, Breite = 0, Höhe = 0. Der Rahmen von self.view wird auf x = 0, y = 0, width = 375, height = 812 gesetzt, aber es zeigt immer noch wie das Bild oben – ijason03