PCH文件是一个预编译文件,pch头文件的内容能够被项目中所有其他源文件共享和访问
1.存放一些全局的宏(整个项目都要用的上的)
2.用来包含一些全部的头文件
3.能够自动打开或关闭日志输出功能
其中可用来存储共享的信息:其他页面需要导入的头文件以及屏幕宽度,高度设置,需要的第三方库头文件等
创建完成后还要进行相关的配置,
command +b 会进行预编译,预编译好的pch文件,会被缓存起来,提高编译速度
TabbarController和navigationController
initialize方法,可以利用他,在类使用前可以进行一些预处理,Apple文档中说明的load和initialize的区别:load是只要是类所在的文件被引用就会被调用,而initialize是在类或其子类的第一个方法被调用之前调用,所以如果类没有被引用进项目,就不会有load调用,但即使类文件被引用,但是没有使用,则initialize也不会被调用
他的相同点在于:方法只会被调用一次
在这两个controller中
initialize{
在这里可以设置一些静态属性
appearance
UIAppearance设置一些UI的全局效果,这样很方便实现UI的自定义效果,有能最简单的实现统一界面风格,注意:
1.控件遵守了UIAppearance协议,才能对控件进行appearance设置
2、只有被UI_APPEARANCE_SELECTOR这个宏修饰的属性才能使用appearance进行设置,其他属性则不具备该功能
3、appearance设置需要在该控制显示之前设置完成,否则可能无效
setTitleTextAttributes设置title的文字属性
UINavigationBar提供了titleTextAttributes来简单设置title的样式
titleTextAttributes是一个NSDictionary类型,包含的固定的属性名称,可以用来设置title的样式,指定的属性keys
声明于NSString UIKit Additions Reference扩展中,包括:
NSString *constUITextAttributeFont,设置title的文字字体;
NSString*constUITextAttributeTextColor,设置title的文字颜色;
NSString*constUITextAttributeTextShadowColor,设置titlewz的阴影颜色;
NSString*constUITextAttributeTextShadowOffset,设置titlewz阴影的平移量 ;
imageWithRenderingMode是UIImage的渲染模式
tint color是UIColor的一个属性,代表对象的颜色风格,所有继承自UIView的对象都具有tintColor属性,个别对象如UIBarButtonItem等也具有该属性。
你可以设置一个UIImage在渲染时是否使用当前视图的Tint Color。UIImage新增了一个只读属性:renderingMode,对应的还有一个新增方法:imageWithRenderingMode:,它使用UIImageRenderingMode枚举值来设置图片的renderingMode属性。
UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。
UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,不使用Tint Color。
UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息。
UInavigationController的一般使用(项目中都是自定义使用)
如果使用系统自带的NavigationController,可能会造成许多意想不到的问题,比如说返回手势的失效,NavigationBar颜色设置的不一致(由于透明度造成),或者是当NavigationController嵌套在UITabbarController中使用时,在push过程中,tabor何时消失的不确定等等问题,所以我们经常使用自定义的NavigationController来控制一组控制器,过程如下:
1.继承UINavigationController来实现自己的NavigationController。
2.解决返回手势失败的问题。
3.解决NavigationBar颜色设置不一致的问题。
4.解决push时隐藏Tabbar。
5.设置整个NavigationController状态栏的样式,注意:在iOS7之后,修改状态栏样式的方法不被提供了,而是改为了控制器自己重写方法
- (UIStatusBarStyle)preferredStatusBarStyle;
来实现。但是如果控制器被NavigationController所管理,那么该方法只会调用一次,即调用栈底层的控制器的该方法,其他控制器的该方法会被截断。(还有的一些设置http://www.jianshu.com/p/9bcd6a405ef3)