14

この問題でつまずいたことがありますか?

基本的に iOS 7 では、ナビゲートしたサブビュー上でナビゲーション コントローラーがレンダリングされます。

iOS 6 ビューでは、ナビゲーション バーとフッターの間に囲まれています。iOS 7 では、ナビゲーション バーとフッターの下で、サブビューが全画面表示されるように見えます。その結果、ユーザーには表示されません。

サブビューに移動する方法は次のとおりです

BRSMyListSubViewController *tagsInfoVC = [[BRSMyListSubViewController alloc] initWithCheckinsList:self.checkinsList
                                                                                selectedTag:[self tagByIndexPath:indexPath]];

[self.navigationController pushViewController:tagsInfoVC animated:YES];

これが私がそれを初期化する方法ですviewDidLoad

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(settings:)];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Logout" style:UIBarButtonItemStyleBordered target:self action:@selector(logout:)];

価値があることについては、サブビューが Autolayout を使用して XIB で定義されていることにも言及する必要があります。これが私のXIBのソースです:http://pastebin.com/6RR0zYu4

最後に、iOS 6 での表示は次のとおりです。

ここに画像の説明を入力

そしてiOS 7では

ここに画像の説明を入力

何かご意見は ?

4

2 に答える 2

37

さて、私はそれを理解しました。

サブビュー(BRSMyListSubViewController私の場合)では、viewDidLoadこれら2つのうちの1つを設定する必要があります

self.edgesForExtendedLayout = UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets = NO;

また

self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = YES;

興味深いことに、ルート ビュー コントローラーでは、これらの値はそれぞれdefaultUIRectEdgeAllに設定されていますがNO、navbar とフッターの下にはありません。YEStableView

なんでこんなに非論理的なのかわからない。

edgesForExtendedLayout明らかに動作の原因であるにもかかわらず、他の 2 つのプロパティのいずれかと混合する必要があるのも奇妙です。

PS。iOS 6 で動かしたい人向け。if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)

于 2013-08-29T05:29:07.620 に答える