2016-08-03 66 views
0

Aus irgendeinem Grund sind die Ränder der UIWindowrootViewController 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?

Antwort

0

Die Ränder, die Sie beschreiben, sind nichts anderes als "Guides". Sie wirken sich nicht auf das Layout Ihrer Ansichten aus, es sei denn, Sie verwenden sie als Teil Ihrer Layoutbeschränkungen. Sie beeinflussen das Layout überhaupt nicht, wenn Sie sich dafür entscheiden, Frames/Grenzen zu verwenden.

+0

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

+0

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

+0

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