LaunchScreen产生原因:代替之前的启动图片
好处:
1.可以展示更多的东西
2.可以只需要出一个尺寸的图片。
启动图片的优先级
启动图片 < LaunchScreen.xib
模拟器尺寸不对
程序中碰见模拟器尺寸不对,马上去找启动图片,默认模拟器的尺寸由启动图片决定。
二、程序启动原理( UIApplicationMain(::::) )
1.创建UIApplication对象
2.创建AppDelegate对象,并且成为UIApplication对象代理属性
3.开启主运行循环:目的让程序一直跑起来
4.加载info.plist文件,判断下info.plist文件里面有木有指定main.storyboard,如果指定,就会去加载main.storyboard
main.storyboard底层实现
1.初始化窗口
2.加载storyboard文件,并且创建箭头指向的控制器
3.把新创建的控制器作为窗口的根控制器,让窗口现实
三、如何加载storyboard文件
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
// instantiateInitialViewController:默认加载箭头指向的控制器
[storyboard instantiateInitialViewController];
四、思想
封装思想:如果以后项目中,有相同的功能,抽取一个类,封装好
如何封装类:做到自己的事情全部交给自己管理。
抽方法:一般一个功能就抽一个方法,以后开发中如果有相同的功能,找到对应的类就能找到功能
/*****************************************************************/
补充:
1 uiviewcontroller 的view是懒加载的
2 tabarcontroller 的view在初始化控制器时就加载
3 instancetype 默认识别当前是哪个类或对象调用,就会转换成对应类的对象
有中文的属性放在后面。(工厂方法,使用instanceType,使用id无法使用点语法,能调用任何对象的方法,无法检测错误。)
// 工厂方法
// SubFlag *
+ (instancetype)flag;
+ (instancetype)flag
{
Flag *f = [[self alloc] init];
return f;
}
4 NSAttribute key值,添加UIKit库文件,查看NSAttributedString.h头文件
五、苹果模型
Item:就是苹果的模型命名规范
tabBarItem:决定着tabBars上按钮的内容
如果通过模型设置控件的文字颜色,只能通过文本属性(富文本:颜色,字体,空心,阴影,图文混排)
六、在ios7之后,默认会把UITabBar上面的按钮图片渲染成蓝色,一般需要告诉图片保持最原始的图片,或者在image.xcassest里面设置render模式
七、类的加载和初始化
什么时候调用:程序一启动的时候就会把所有的类加载进内存
作用:加载类的时候调用
+ (void)load
{
}
// 什么时候调用:当第一次使用这个类或者子类的时候调用
// 作用:初始化类
+ (void)initialize
{
}
八、appearance方法
appearance只要一个类遵守UIAppearance,就能获取全局的外观,UIView都可以获取所有的外观
获取所有的tabBarItem外观标识(修改所有)
UITabBarItem *item = [UITabBarItem appearance];
self -> CZTabBarController
获取当前这个类下面的所有tabBarItem(修改当前类)
UITabBarItem *item = [UITabBarItem appearanceWhenContainedIn:self, nil]
九、利用KVC可以把系统readonly的属性修改
//利用KVC把readly的属性改
[self setValue:tabBar forKeyPath:@"tabBar"];
//objc_msgSend(self, @selector(setTabBar:),tabBar);(运行时消息机制)
补充:[tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton" )] (反射机制)
十、UITabBar的items属性
self.items UITabBarItem模型,有多少个子控制器就有多少个UITabBarItem模型
十一:sizeToFit:默认会根据按钮的背景图片或者image和文字计算出按钮的最合适的尺寸
十二:模型设计思想
id:能调用任何对象的get,set方法,不能帮我们检查错误
类方法:需要使用self创建对象