ios7适配--navgationbar遮住下面view的处理

来源:互联网 发布:淘宝店铺营业时间设置 编辑:程序博客网 时间:2024/06/04 19:43

3
down votefavorite
 

Have you guys stumbled up on this issue ?

Basically in iOS 7 Navigation Controller is rendered over the sub-view I navigated to.

In iOS 6 view I navigate to is enclosed between navigation bar and footer. In iOS 7 it looks like sub-view is rendered full-screen, under navigation bar and footer. As result user don't see it.

Here is how I navigate to subview

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

Here is how I initialize it in 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:)];

For what it's worth I should also mention that sub-view is defined in XIB using Autolayout. Here is source of my XIB: http://pastebin.com/6RR0zYu4

And finally here is how it looks in iOS 6

enter image description here

And in iOS 7

enter image description here

Any thoughts ?

share|edit|flag
 add comment

1 Answer

activeoldestvotes
up vote5down voteaccepted

Well, I figured it out.

In your sub-view (BRSMyListSubViewController in my case), in viewDidLoad, you need to set one of these two

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

OR

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

Interestingly enough in root view controller these value are set to default UIRectEdgeAllNO andYES respectively but its tableView is NOT under navbar and footer.

I don't know why it's so illogical.

It's also strange that edgesForExtendedLayout has to be mixed with one of two other properties even though it's clearly responsible for the behavior.

share|edit|flag
 
upvote flagThank you for putting the answer, it really helped me. – titicaca Sep 12 at 6:11
0 0
原创粉丝点击