iOS 屏幕原点坐标 && 导航栏风格的自定义

其一

屏幕原点坐标 (x ,y) 受 self.navigationController. navigationBar 的 setTranslucent (BOOL) 属性控制

在 iOS7 以后  translucent  属性默认为 YES   该属性含义是 毛玻璃 半透明效果

YES  起始 坐标 为屏幕顶端 左上角 为 (0 , 0)  ,此时 UI展示的内容可透过 导航栏

NO   起始 坐标 为屏幕顶端 左上角 为 (0 , 20 + 44) 这个说明 起始坐标 在状态栏 和 导航栏 之下边开始 导航栏便没有毛玻璃效果了

其二

我们知道导航控制器 是控制根  整体都是统一的状态  所以要用系统的导航控制器改变风格 就是改变整体  那么如果要定制 其中一个页面的话 当退出 当前页面 一定要恢复导航栏的系统设计状态

剩下的 在实战中慢慢体会 举一反三  效果都可以出来

例如

+(void)setNormalGreenNav:(UINavigationController *)navigationController
{
    [navigationController.navigationBar setTranslucent:NO];
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
        [navigationController.navigationBar setTintColor:[UIColor colorWithRed:0.25 green:0.65 blue:0.35 alpha:1]];
        [navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"header.png"] forBarMetrics: UIBarMetricsDefault];

    } else {
        [navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
        [navigationController.navigationBar setTintColor:[UIColor whiteColor]];//导航栏的文字颜色
        [navigationController.navigationBar setBarTintColor:COLOR_THEME_GREEN];//导航栏的背景颜色
    }
}

+(void)cancelNormalGreenNav:(UINavigationController *)navigationController
{
    [navigationController.navigationBar setTranslucent:YES];
    [navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"header_newblack2"] forBarMetrics: UIBarMetricsDefault];//这个是个半透明的图片
}

其三

bug 分析  以上方法   整体风格 是绿色导航 无毛玻璃效果  其中 偶尔会出现 透明 毛玻璃效果  这个时候 如果进行切换 时候 起始坐标高度变化 0 -- (20 + 44) 会出现 黑色横条的过度视觉 UI   这个 我处理的方法是 加上UI延迟  0.8秒 左右 就可以避免看到这个黑色横条

时间: 2024-07-30 01:38:10

iOS 屏幕原点坐标 && 导航栏风格的自定义的相关文章

iOS 7 教程:定制iOS 7中的导航栏和状态栏

目录(?)[-] iOS 7中默认的导航栏 设置导航栏的背景颜色 在导航栏中使用背景图片 定制返回按钮的颜 修改导航栏标题的字体 修改导航栏标题为图片 添加多个按钮 修改状态栏的风格 隐藏状态栏 总结 注:本文译自Customizing Navigation Bar and Status Bar in iOS 7 近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外观上有大量的改动.从开发者的角度来看,导航栏和状态栏就发生了明显的变化.状态栏现在是半透明的了,这

iOS 7中的导航栏和状态栏

iOS 7中默认的导航栏 在开始定制之前,我们先来看看iOS 7中默认导航栏的外观.通过Xcode用Single View Controller模板创建一个工程.然后将view controller嵌入到一个navigation controller中.如果你不想从头开始,那么也可以在这里下载到这个 示例工程.Xcode 5包含有iOS 6和iOS 7模拟器,我们可以在这两个不同的模拟器版本中运行示例程序,进行对比,如下图所示: 如上图所示,在iOS 7中的导航栏默认情况下跟状态栏是交织在一起的

定制iOS 7中的导航栏和状态栏

本文转载至 http://www.cocoachina.com/industry/20131104/7287.html 跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外观上有大量的改动.从开发者的角度来看,导航栏和状态栏就发生了明显的变化.状态栏现在是半透明的了,这也 “” 阅读器 近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外观上有大量的改动.从开发者的角度来看,导航栏和状态栏就发生了明显的变化.状态栏现在是半透明的了,这

IOS开发中设置导航栏主题

/** * 系统在第一次使用这个类的时候调用(1个类只会调用一次) */ + (void)initialize { // 设置导航栏主题 UINavigationBar *navBar = [UINavigationBar appearance]; // 设置背景图片 NSString *bgName = nil; if (iOS7) { // 至少是iOS 7.0 bgName = @"NavBar64"; } else { // 非iOS7 bgName = @"NavB

iOS 更改状态栏、导航栏颜色的几种方法

ios上状态栏 就是指的最上面的20像素高的部分状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部分:就是指的显示电池.时间等部分:背景部分:就是显示黑色或者图片的背景部分: (一)设置statusBar的[前景部分] 简单来说,就是设置显示电池电量.时间.网络部分标示的颜色, 这里只能设置两种颜色: 默认的黑色(UIStatusBarStyleDefault)白色(UIStatusBarStyleLightContent)可以设置的地方有两个:plist设置里面 和 程序代码里初始化设

关于iOS的autolayout中导航栏的疑问

在storyBoard中,如果使用editor>embed>navigation controller 就可以给一个Controller添加一个导航栏控制器 这时候拖一个view上去,给这个view添加约束的时候,就会有top layout guide这个选项,这样在横屏,竖屏情况下,view都会紧贴导航栏显示 但是在新创建一个file的时候,一起创建出来的xib却没有这种选项,要想让view紧贴导航栏显示,必须要将顶部约束成64,但是在横屏状态下就会在导航栏和view中间出现白条,因为横屏状

保持UIImagePickerController后导航栏风格统一

1. UIImagePickerController 状态栏始终保持某一种风格. -(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{      [[UIApplication  sharedApplication] setStatusB

[iOS类别的使用]---导航栏leftBarButtonItem图标修改

类别(Category) 修改特定的ViewController的导航栏Item图标 在项目中,遇到这样一个问题: 一个新增的VIewController1 想要push到原有的别的VIewController2中时 原有的VIewController2的导航栏左侧leftBarButtonItem图标,变成了系统自带的样式, 而且,由于项目混合使用了代码和StoryBoard开发,更增加了统一修改leftBarButtonItem的难度! 一般来说,我们会在 VIewController2 中

iOS菜鸟开发-2 导航栏主题

1.给每个子控制器添加导航栏 /** *  初始化一个子控制器 * *  @param child               需要初始化的子控制器 *  @param title               标题 *  @param imageName           未选中图标 *  @param selectedImageName   选中的图标 */ - (void)setupOneChildVC:(UIViewController *)child title:(NSString *