Nach dem Update auf Xcode 5 haben sich die Navigationsleisten in allen Ansichten meiner App nach unten verschoben. Hier sind einige Screenshots, von denen der erste alles in der Ansicht zeigt, während es heruntergezogen wird, und der zweite alles unberührt zeigt. Die Suchleiste sollte dort beginnen, wo sich die Navigationsleiste befindet.
Weiß jemand, wie ich das beheben kann?
bearbeiten: ich habe diese vorherige Empfehlung ausprobiert:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
Aber es liefert sehr merkwürdige Ergebnisse.
Dies kann daran liegen, dass ich unter diesem Ansichts-Controller ein "Folienmenü" habe, das aufgrund der Transparenz der Navigationsleiste angezeigt wird.
ios
objective-c
ios7
uinavigationbar
uistatusbar
Sam D20
quelle
quelle
Antworten:
Setzen Sie die durchscheinende Eigenschaft der Navigationsleiste auf NO :
Dadurch wird verhindert, dass die Ansicht unter der Navigationsleiste und der Statusleiste eingerahmt wird.
Wenn Sie die Navigationsleiste ein- und ausblenden müssen, verwenden Sie
in Ihrer
viewDidLoad
Methode.quelle
viewDidLoad
aber es gibt keine Änderungen.In
iOS 7
durch Standardwerte all Wert - Controller durchscheinend Eigenschaft JA ist , so dass Sie durchscheinend Eigenschaft NO für dieses Problem.quelle
Sie können die Option "Kanten erweitern" im Attributinspektor des View Controllers dieses Bildschirms deaktivieren (siehe Abbildung unten):
quelle
Dies funktioniert auch unter iOS 8.1 für Swift
quelle
Wenn Sie die Transluzenz beibehalten möchten, fügen Sie
navigationBar
am Ende IhresviewDidLoad
oder in IhremviewWillAppear
Code diese Codezeile hinzu:Wenn Ihre
scrollView
Unterklasse (UITableView
,UICollectionView
usw.)index
in Ihrer aktuellen Ansicht auf 0 stehtsubviews
, werden die Einfügungen automatisch an Ihre angepasstnavigationBar
. Und es sollte auch in Versionen vor iOS7 keine Auswirkungen auf Ihre Benutzeroberfläche haben.BEARBEITEN Wenn Sie Ihr
UITableView
Programm programmgesteuert initialisieren , fügen Sie es am besten der Ansicht hinzu[self.view insertSubview:self.tableView atIndex:0];
quelle
[self.view insertSubview:self.tableView atIndex:0];
anstatt sie nach dem Hinzufügen nach hinten zu senden.Swift 4 :
Legen Sie die folgende Codezeile in der viewDidLoad-Methode fest:
quelle
Sie können diese Methode wie unter dieser URL gezeigt zu Ihrem View Controller hinzufügen :
quelle
Ein anderer Ansatz besteht darin,
self.automaticallyAdjustsScrollViewInsets = YES;
auf Ihrem View Controller festzulegen. Dies ist standardmäßig aktiviert. Aber in deinem Fall:Ich sehe, dass Sie EGORefreshHeaderView verwenden. Es spielt mit contentInset von UITableView. Wenn Sie es freigeben, setzt der Header den oberen Einschub zurück, anstatt den vorherigen Wert wiederherzustellen.
quelle
Wenn Sie die vollständige Kontrolle über Ansichten haben und fehlerhafte Anpassungen von iOS vermeiden möchten, unterordnen Sie UITableView und passen Sie die Einfügungen (sowohl Bildlauf als auch Anzeigen) in - (void) willMoveToWindow: (UIWindow *) newWindow an. Funktioniert bei mir.
quelle
Eine andere Möglichkeit besteht darin, Ihre Info.plist-Datei im Quellcodemodus zu öffnen und die folgenden Informationen einzugeben:
Hoffe das hilft.
quelle