2017-09-25 2 views
0

In meinem Projekt auf Objective-C mainscreen mit benutzerdefinierten NavigationBar (von Code erstellt) Ansicht auf dem Hauptbildschirm hinzufügen:SafeArea in iOS 11: Wie mit benutzerdefinierten navigationbar ohne safeArea von Code in Objective-c

mainNavigationController = [[NavigationController alloc] initWithRootViewController:mainMenuViewController]; 
mainNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
mainNavigationController.delegate = self; 
mainNavigationController.navigationBar.tintColor = [UIColor whiteColor]; 

UIWindow* window = self.window; 
window.backgroundColor = [UIColor whiteColor]; 
window.rootViewController = mainNavigationController; 
[window makeKeyAndVisible]; 

ich selbst ändern .view wie Größe [UIScreen mainscreen] .applicationFrame]:

UIView* mainView = [[[MainViewControllerView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease]; 
self.view = mainView; 

In mainScreenView ich hinzufügen Scroll:

scrollView = [[UIScrollView alloc] initWithFrame:self.bounds]; 
scrollView.autoresizesSubviews = YES; 
scrollView.autoresizingMask = UIViewAutoresizingNone; 
scrollView.backgroundColor = [UIColor clearColor]; 
scrollView.bounces = NO; 

und einige SubView innerhalb Scroll hinzufügen:

[scrollView addSubview:myLogoView]; 
[scrollView addSubview:littleScrollView]; 
[scrollView addSubview:firstButton]; 
[scrollView addSubview:secondButton]; 
[scrollView addSubview:thirdButton]; 
[scrollView addSubview:fouthButton]; 
[scrollView addSubview:fifthButton]; 
[scrollView addSubview:sixthButton]; 
[scrollView addSubview:seventhButton]; 
[scrollView addSubview:activityIndicatorView]; 

https://www.dropbox.com/s/ttrkolgnch80kr9/safeArea.png?dl=0

Wenn Verwendung XCODE 8 und iOS < = 10, alle Ansicht Ort korrekt auf mainscreen (myLogoView Ort ignorieren Größe von benutzerdefinierten navigationbar und haben Y-Koordinate == 20.0 in absoluten Wertekoordinaten des Gerätebildschirms), , aber wenn 9 und iOS 11 myLogoView unter meiner benutzerdefinierten navigationBar (height == 44) myLogoView Y == 64.0 in absoluten Wert Koordinaten des Gerätebildschirms, in iOS 10 (unter xCode9) alles funktioniert gut - Adde d view auf mainScreen in Startkoordinaten des Bildschirms platziert und Höhe der benutzerdefinierten NavigationBar ignorieren.

In Swift und Storyboard Ich weiß, wie es in iOS11 behoben einfache entfernen safeArea oberen Zeile, aber wie safeArea aus Code in Objective-C entfernen.

Wie beheben Sie dieses Problem?

Antwort

0

Sichere Bereich in iOS 11 ist Ersatz von oben & unten Layout und Apple auf diesem wie unten ausführliche bieten:

Das Layout Führung den Teil Ihrer Ansicht darstellt, die freien Ausblick von Bars und anderen Inhalten . In iOS 11 schreibt Apple die oberen und unteren Layouthilfslinien ab und ersetzt sie durch einen einzigen sicheren Gebietslayout-Leitfaden.

So Basis auf dieser jetzt oben & unten Layout mit Einzel sicheren Bereich ersetzt aber agin, wenn Sie nicht mit Standard navigationbar, so dass Sie wie unter sicheren Bereich in Storyboard deaktivieren:

enter image description here

Sie können den sicheren Bereich deaktivieren und es wird nach oben zurückgesetzt & unteren Layout.

Ref Vor & Nach uncheck sicherem Bereich:

Vor oder Standard:

enter image description here

Uncheck Sichere Bereich oder altes Verhalten:

enter image description here

Ich hoffe, dies wird Ihnen helfen, das neue iOS 11-Update zu verstehen, das sich auf das obere Layout & unten bezieht, und ändern Sie Ihren Code gemäß dieser Layoutänderung.

Auch hier ist ein guter Blog mehr für die Sicherheit im Bereich Layout zu erklären: Safe area

+0

Sorry, aber die Frage, die ich erwähnte wissen, wie es von Storyboard und Swift zu tun. Interessiert an ist Objective-c –

+0

, aber wenn Sie sichere Bereich von Storyboard deaktivieren wird es Ihr Problem b'cus lösen, wie Sie erwähnen, sichere Bereich schafft Problem für Ihre benutzerdefinierte Navigationsleiste, so dass ich denke nicht, nach Deaktivieren dieser nicht erforderlich zu ändern jede Sache wie das gleiche wie iOS 10. – CodeChanger

+0

in meinem Projekt gibt es kein Storyboard und ich kann diesen sicheren Bereich nicht von der Einstellung Panel deaktivieren ... –

Verwandte Themen