IOS7 导航栏适配

问题:

Appdelegate中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

ViewController *VC=[[ViewController alloc]init];

UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:VC];

nav.view.backgroundColor = [UIColor blueColor];

self.window.rootViewController=nav;

return YES;

}

在ViewController中:

- (void)viewDidLoad {
    [super viewDidLoad];
//    if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
//    {
//        self.edgesForExtendedLayout = UIRectEdgeNone;
//    }
//    self.navigationController.navigationBar.translucent=NO;
    self.view.backgroundColor=[UIColor clearColor];
    UIScrollView *segmentScorllView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 164, self.view.frame.size.width, 44)];
    segmentScorllView.backgroundColor=[UIColor greenColor];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setFrame:CGRectMake(0, 0, 50, 44)];
    [button setTitle:@"AAA" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];
    [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    button.backgroundColor = [UIColor brownColor];
    [button.titleLabel setFont:[UIFont systemFontOfSize:15]];
    [segmentScorllView addSubview:button];
    [self.view addSubview:segmentScorllView];
}

运行效果:

理想运行结果:

原因:

在IOS7中屏幕的起始坐标包括导航状态栏

解决方法:

将上面代码的两个注释去除任一注释

时间: 2024-10-12 21:15:45

IOS7 导航栏适配的相关文章

IOS7 导航栏适配二

ios7下的app都是全屏的,意思就是所有控制器的view默认都是从  屏幕的 (0,0)开始. 这时候用到导航栏时,往往会出现被导航栏挡住情况. 最明显的是用到tableView时,第一行的数据会被导航栏遮盖 两种解决方法: 一.在控制器下设置导航控制器的导航栏的translucent(半透明)属性为NO,translucent属性在ios6之前默认为no,而在ios7下的导航栏默认却是半透明的,为yes,所以该属性不会占据空间.前提是你不需要导航栏半透明效果. 二.在控制器下设置导航控制器的

iOS_25_彩票骨架搭建+导航栏适配

最终效果图: Main.storyboard 初始化的控制器是:导航控制器 它的根控制器是:TabBarController TabBarController的底部是一个自定义的TabBar 里面添加了5个TabBarItem 点击每一个item, 会将tabBar上的对应item的子控制器的navigationItem的值, 转移(赋值,复制)给TabBarController的navigationItem, 从而显示在导航栏上, 因为TabBarController就是导航控制器的根控制器,

ios7导航栏+scrollview布局注意

ios7以后苹果新增加了半透明效果,在这里强调一点:在nav+scrollview是,scrollview控件会自动想下缩进64个像素点,以实现穿透效果:iOS7在Conttoller中新增了这个属性:automaticallyAdjustsScrollViewInsets,(默认YES)(如果将automaticallyAdjustsScrollViewInsets设为no,那么scrollview的y为0时,则不会被导航栏挡住.谢谢!

自定义iOS7导航栏背景,标题和返回按钮文字颜色

转自:http://blog.csdn.net/mad1989/article/details/41516743 在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Color 方法一: [objc] view plaincopy //set NavigationBar 背景颜色&title 颜色 [self.navigationController.na

【转】自定义iOS7导航栏背景,标题和返回按钮文字颜色 -- 不错不错!!

原文网址:http://blog.csdn.net/mad1989/article/details/41516743 在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Color 方法一: [objc] view plain copy //set NavigationBar 背景颜色&title 颜色 [self.navigationController

ios6与iOS7 的图片适配

iOS6 与IOS7 适配时 应在Main.storybord中ViewController中顶部第4选项中的ViewController-->Extend Edges中的 全部选项设为不选中状态(Under Top Bars ,Under Bottom Bars,Under Opaque Bars),避免图片向四周扩展 如果在运行有问题,在顶部的第一个选项中的Use Auto Layout 设为不选中 再运行时记得清楚缓存 ios6 导航栏背景的出图规格 非Retina: 320 X 44 p

状态栏、导航栏、导航控制器相关属性设置等注意事项

2015年07月08日 1.对于 IOS6 导航栏背景图片为 44 则@2x 得设计为 88 2.对于 IOS7 导航栏背景图片为 64 则@2x 得设计为 128 出现以上差异原因是由于IOS6里面,状态栏20是不包括在导航栏里面的,而 IOS7是包含在导航栏里面的. 3. 修改状态栏的文字颜色(全局修改) 1. 首先先在 info.plist文件中,先添加一个View controller-based status bar appearance   的选项 并设置为 NO. 2.这是可以使用

设置导航栏主题+iOS6 & iOS7 适配

1 /** 2 * 设置导航栏按钮主题 3 */ 4 + (void)setupBarButtonItemTheme 5 { 6 UIBarButtonItem *item = [UIBarButtonItem appearance]; 7 8 // 设置背景 9 if (!iOS7) { 10 [item setBackgroundImage:[UIImage imageWithName:@"navigationbar_button_background"] forState:UIC

IOS7 适配时导航栏变黑

当适配IOS的布局时遇到问题:导航栏和菜单栏后台会变黑色. self.edgesForExtendedLayout = UIRectEdgeNone; 原因是系统默认这两个控件是半通明的. 解决方案: self.navigationController.navigationBar.translucent = NO; self.tabBarController.tabBar.translucent = NO;