Aus irgendeinem Grund sind die Ränder der UIWindow
rootViewController
links und rechts auf 16 und oben und unten auf 0 gesetzt. Leider arbeite ich mit einer Legacy-Anwendung (read: non-storyboard), die alles manuell initialisiert. Dies betrifft View-Controller viele Schichten tief, die einen unteren Rand von beharren 0.Die Ränder des Root View Controllers werden auf ungerade Werte gesetzt
auf, die habe ich diesen Code in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-Code
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [[UIViewController alloc] init];
[self.window makeKeyAndVisible];
UIEdgeInsets insets = self.window.layoutMargins;
NSLog(@"Left %f, Right %f, Bottom %f, Top %f", insets.left, insets.right, insets.bottom, insets.top);
insets = self.window.rootViewController.view.layoutMargins;
NSLog(@"Left %f, Right %f, Bottom %f, Top %f", insets.left, insets.right, insets.bottom, insets.top);
Herstellung der folgenden Ausgabe
2016-08-03 18:10:24.280 app[426:182429] Left 8.000000, Right 8.000000, Bottom 8.000000, Top 8.000000
2016-08-03 18:10:24.280 app[426:182429] Left 16.000000, Right 16.000000, Bottom 0.000000, Top 0.000000
Bearbeiten
Ich habe endlich gefunden, dass dies das erwartete Verhalten ist. Wenn ich einen neuen UIViewController drücke, bin ich überrascht, dass kein unterer Rand hinzugefügt wird. Ist das erwartetes Verhalten? Sollte ich nie erwarten, einen unteren Rand in iOS zu haben?
Ich verließ mich auf das LayoutMargins, um meine Sichtweise auszulegen, und ich fand es merkwürdig, dass Knöpfe am unteren Rand der Ansicht platziert wurden, aber von außen eingesetzt wurden. Ich denke, das ist zu erwarten, aber wenn Sie mit einem Storyboard vs. mit einem XIB bauen, bietet es an, die unteren und oberen Layout-Guides zu verwenden, die ebenfalls eingefügt sind. Scheint, als würde etwas Vermächtnis losgehen. – JustinHK
Stellen Sie sicher, dass Sie den Unterschied zwischen der Verwendung von AutoLayout und der Verwendung von Frames/Bounds verstehen. Ihre Erwartungen an die Margenrichtlinien unterscheiden sich von System zu System. – bsarrazin
Ich habe nur Auto-Layout verwendet, war ich nur überrascht, dass, wenn ich eine Single-Page-Anwendung in iOS erstellen und die einzige Unteransicht zu den oberen, unteren und seitlichen Rändern sperren, dass es die Kante nicht berührt, aber berührt oben und unten auf dem Bildschirm. – JustinHK