Ich erstelle eine benutzerdefinierte modale Ansicht, die eine Reihe von UILabels, UIImages usw. enthält und als modale Ansicht angezeigt wird. Die Ansicht muss das automatische Layout verwenden und muss programmgesteuert ausgeführt werden und nicht mit Storyboard/xibs (leider).iOS-Auto-Layout-Visual-Format - Wie Abstand einstellen, um einen Wert zu versuchen, aber auf einen anderen für kleinere Bildschirme fallen?
Die modale Ansicht wächst mit dem Inhalt bis zu 8 Punkten von der Kante (oben, unten, links, rechts) des Bildschirms.
Ein Großteil der Ränder zwischen untergeordneten Ansichten sind 16 und 24 Punkte. Das ist alles auf neueren iPhones und im Portrait-Modus, und lässt viel Platz zwischen dem Bildschirm und der modalen Ansicht. Wenn jedoch in Querformat gedreht wird, trifft die modale Ansicht die Grenze von 8 pt von der oberen/unteren Kante und viele der untergeordneten Ansichten werden vollständig verkleinert.
Die Lösung dafür ist die Änderung aller "Ränder" zwischen den Kindansichten auf 8 Punkte. Dies erlaubt alles, genug Platz zu zeigen.
Mein Ziel ist es, in der Lage zu sein, die Ränder dynamisch anzupassen, so dass sie den höheren Wert "versuchen" (dh 16, 24), aber auf einen kleineren Wert (dh 8) "zurückfallen" den Bildschirm füllen.
Ich weiß, eine Methode besteht darin, mehrere Constraints zu verwenden und sie nur zu wechseln, wenn die Ausrichtung geändert wird, aber ich möchte diese Route nicht verwenden, da es mit der Zeit mühsam sein kann, Änderungen zu verwalten gemacht.
Ich habe einen Leckerbissen ein finden, während die Rückseite die Sie so etwas wie dies mit Prioritätswerten tun könnten:
NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-([email protected],[email protected])-[titleLabel]-[detailsLabel]-([email protected],[email protected])-[button(40)]-([email protected],[email protected])-|", options: [.AlignAllCenterX], metrics: metrics, views: views))
Dies ist jedoch immer auf den ‚8 @ 900‘ Wert fällt zurück, auch wenn viele es von Raum für die Aussicht, in der Höhe zu wachsen.
Ich habe auch versucht diese, die für einige der untergeordneten Ansichten richtig zu funktionieren scheint, aber nicht alle von ihnen:
NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-(>=8,<=24)-[titleLabel]-[detailsLabel]-(>=8,<=24)-[button(40)]-(>=8,<=24)-|", options: [.AlignAllCenterX], metrics: metrics, views: views))
(> = 8,24 @ 999) löste mein Problem für alle Ränder. Funktioniert perfekt ohne versteckte Ansichten zu benötigen. Vielen Dank!! – JimmyJammed