iOS 导航栏TitleView居中的问题

titleVIew 默认情况下 是居中显示的,出现不居中的情况原因有两个:1,leftBarButtonItem,和rightBarButtonItem 留给titleView 的空间太小导致。 2,你本省自定义的titleView 没有居中,就像如果你的titleView 是个lab ,而lab的textAlengent 没有为center 一样。

对于第一种,我们可以适当减小title的宽度,或者 设置 sizeThatFIts来解决。

iOS开发之Autolayout——“Content Compression Resistance”“Content Hugging”

intrinsic size(固有尺寸),一个根据自身内容大小而决定的尺寸。我们都知道,UIButton、UILabel等,在布局时并不需要给它们设置所有constraints,只需要设置 leading space 和 top space 等能决定 X跟Y的constraints 就能够进行布局,这就是它们的intrinsic size在起作用,决定它们的宽高。

“Content Compression Resistance Priority”,也叫内容压缩阻力优先级(小名:别挤我),该优先级越高,则越晚轮到被压缩。

“Content Hugging Priority”,也叫内容紧靠优先级(小名:别扯我),该优先级越高,这越晚轮到被拉伸。

sizeToFit

sizeToFit()声明在UIView中,所以我们的所有的视图控件,都可以调用这个方法

sizeToFit如果不重写sizeThatsFit的话是系统提供frame。

self.title & self.navigationItem.title

self.title相当于是同时设置tabBarItem.title和navigationItem.title的快捷方法,而tabBarItem.title才是真正对应tab的标题,navigationItem.title对应NavigationBar上面的标题。

UIStatusBar

状态栏的windowLevel为UIWindowLevelStatusBar,而window的windowLevel为UIWindowLevelNormal。所以一般情况下,状态栏位于window之上。

UIStatusBar的位置和尺寸

1 NSString *statusBarFrame = NSStringFromCGRect([UIApplication sharedApplication].statusBarFrame);

NSLog(, statusBarFrame);

在iPhone 6竖屏测试输出:

2015-08-04 16:33:47.159 Test[6175:205261] {{0, 0}, {375, 20}}

在iPhone 6横屏测试输出:

2015-08-04 16:33:47.159 Test[6175:205261] {{0, 0}, {667, 20}}

在iPhone 6 Plus竖屏测试输出:

2015-08-04 16:33:47.159 Test[6175:205261] {{0, 0}, {414, 20}}

UIStatusBarStyle(字体颜色)和背景颜色

UIStatusBarStyle控制状态栏的字体颜色,在iOS7只支持两种:UIStatusBarStyleDefault、UIStatusBarStyleLightContent。注意,虽然目前表现出来的颜色是黑色或白色,但不是Black或White之类的,苹果留了一手以防以后改变。Default表示深色(Dark),用于亮色(Light)背景;LightContent表示亮色(Light),用于深色(Dark)背景。当然这也不是强制的。
在没有导航栏的情况下,状态栏的背景颜色是透明的,可以在View里添加一个20点高度的子View“伪造”一个背景;在有导航栏的情况下,状态栏的背景颜色和状态栏一样,看起来融为了一体
 
注意:
如果要在App启动时和运行时全程隐藏状态栏,在View controller-based status bar appearance为NO的情况下,只需简单将Status bar is initially hidden(UIStatusBarHidden)设置为YES。

设置字体颜色为白色

可以在Info中将Status bar style(UIStatusBarStyle)对应的Value设置为UIStatusBarStyeLightContent。
也可以在General中将Status Bar style选择为Light:
同样的,上面两种设置方法最终作用到info.plist文件。如果没有使用基于ViewController的状态栏控制,并且App内部又需要将状态栏颜色改为黑色,可以在AppDelegate中设置:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

最新文章

  1. FFT 快速傅里叶变换浅析
  2. Unity Animator动画状态机 深入理解(三)二维混合树
  3. kvc(键-值编码)
  4. 如何让MVC6在IIS上面跑
  5. WPF的Binding学习笔记(二)
  6. 02-Java 数组和排序算法
  7. 慕课网-安卓工程师初养成-4-3 Java条件语句之多重 if
  8. C++(指针)
  9. leetcode Search in Rotated Sorted Array python
  10. Boost学习之可移植路径操作--filesystem
  11. 基于visual Studio2013解决C语言竞赛题之1074八皇后
  12. 安装完jdk配置环境变量
  13. codeforces#1139E. Maximize Mex(逆处理,二分匹配)
  14. HTTP请求头与响应头(转载)
  15. js弹出对话框的三种方式(转)
  16. rabbitMQ windows 安装 入门
  17. mysql之视图,存储过程,触发器,事务
  18. SpringMVC请求参数注解两个小问题
  19. NRF51822之DFU使用手机升级
  20. XP 终端服务组件 ,SP3 多用户补丁(替换)文件

热门文章

  1. OO设计
  2. ARC forbids explicit message send of 'autorelease'错误
  3. JS二维数据处理逻辑封装探究
  4. java判断字符串是否为乱码
  5. RTB撕开黑盒子 Part 1: Datacratic's RTB Algorithms
  6. “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成)
  7. 搜狗主页页面CSS学习小记
  8. 编程实战——电影管理器之界面UI及动画切换
  9. oracle中backup模式
  10. django admin.py settings 操作