您的位置:首页 > 移动开发 > IOS开发

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

2014-08-07 18:10 218 查看
3down 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



And in iOS 7



Any thoughts ?

ios cocoa-touch ios6 uinavigationcontroller ios7
share|edit|flag
edited Aug 29 at 18:47

asked Aug 29 at 4:09



ruslan

3,42211555

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
UIRectEdgeAll
,
NO
and
YES
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
edited Aug 29 at 6:11

answered Aug 29 at 5:29



ruslan

3,42211555

upvote
flag
Thank you for putting the answer, it really helped me. – titicaca Sep
12 at 6:11
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: