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

iOS7之后视图被导航栏遮挡问题

2015-09-29 16:07 411 查看
在开发iOS7的界面的时候,有时候你会发现UIViewController里的subView有时会被导航栏遮盖,原因是iOS7鼓励全屏布局,UIViewController中的self.view的坐标原点是从导航栏的原点开始算起。

解决办法:

方法1.设置self.window的frame时用applicationFrame

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] <span style="color:#3366ff;">bounds</span>]];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] <span style="color:#3366ff;">applicationFrame</span>]];

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"])
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
GuideViewController *guideViewController = [[GuideViewController alloc] init];
_window.rootViewController = guideViewController;
[_window makeKeyAndVisible];
}
else
{
// 首次进入判断是否已登录
// 1.未登录进入注册界面
// 2.已登录进入主界面
if (/* DISABLES CODE */ (1))
{
RegistViewController *registVC = [[RegistViewController alloc] init];
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:registVC];

[self.window makeKeyAndVisible];
}
else
{
[self openMain];
}
}

return YES;
}


方法2.在viewDidLoad里面加上下面的方法

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

if( ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 7.0))
{
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = NO;
self.modalPresentationCapturesStatusBarAppearance = NO;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: