Xcode 5に更新した後、アプリのすべてのビューのナビゲーションバーが下に移動しました。以下に、いくつかのスクリーンショットを示します。最初のビューは、プルダウンされたビューのすべてを表示し、2番目は、すべてをそのまま表示します。検索バーは、ナビゲーションバーの場所から開始する必要があります。
誰も私がこれを修正する方法を知っていますか?
編集:私はこの以前の推奨事項を試してみました:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
しかし、それは非常に奇妙な結果をもたらします。
これは、このView Controllerの下にナビゲーションバーの透明性のために表示される「スライドメニュー」があるためかもしれません。
ナビゲーションバーの半透明プロパティをNOに設定:
self.navigationController.navigationBar.translucent = NO;
これにより、ビューがナビゲーションバーとステータスバーの下に表示されなくなります。
ナビゲーションバーを表示および非表示にする必要がある場合は、
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone; // iOS 7 specific
viewDidLoad
メソッドで。
iOS 7
では、デフォルトですべてのコントローラーの半透明プロパティ値はYESであるため、この問題に対して半透明プロパティNOを設定します。
self.navController.navigationBar.translucent = NO;
これはSwiftでもiOS 8.1で機能します
navigationController?.navigationBar.translucent = false
navigationBar
の半透明性を維持する場合は、viewDidLoad
の最後またはviewWillAppear
に次のコード行を追加します。
[self.view sendSubviewToBack:self.tableView]
どういうわけかscrollView
サブクラス(UITableView
、UICollectionView
など)が現在のビューindex
でsubviews
0にある場合、自動的にインセットを調整しますnavigationBar
に。また、iOS7より前のバージョンのUIにも影響することはありません。
EDITUITableView
をプログラムで初期化する場合、この[self.view insertSubview:self.tableView atIndex:0];
を使用してビューに追加することをお勧めします
Swift 4:
ViewDidLoadメソッドで次のコード行を設定します。
self.navigationController?.navigationBar.isTranslucent = false
この URL に示すように、このメソッドをView Controllerに追加できます。
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.searchBar.frame =
CGRectMake(0, self.topOfViewOffset, self.searchBar.frame.size.width, self.searchBar.frame.size.height);
}
別のアプローチは、View Controllerでself.automaticallyAdjustsScrollViewInsets = YES;
を設定することです。これはデフォルトで有効になっています。しかし、あなたの場合:
EGORefreshHeaderViewを使用しているようです。 UITableViewのcontentInsetで再生します。したがって、リリースすると、ヘッダーは前の値を復元するのではなく、上部のインセットをリセットします。
上記の答えはあなたの問題を解決するかもしれませんが、例えば、他の多くの問題を引き起こします:例えば、カスタムビューはナビゲーションバーが不透明になり、すべてのビューを押し下げるため、Yによって中央揃えされません。
半透明のナビゲーションバーを使用しても、この問題は発生せず、iOS 11以降で投稿した問題も発生しません。ただし、iOS 9以降のすべてのiOSプラットフォームで動作する回避策は見つかりませんでした。