IOS开发概述-09.UIController和控制器的View
来源:互联网 发布:阿里云域名修改 编辑:程序博客网 时间:2024/05/21 07:59
1.通过storyboard加载控制器
- 需要先设置项目配置文件中不指定storyboard
// 加载完info.plist完毕后调用,若是指定了SB,就去加载SB,若没有指定则执行以下方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1.创建UIWindow self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 2.创建根控制器(手动加载SB) // UIStoryboard:用来加载SB文件 // 类方法storyboardWithName:bundle:用来加载指定名称的SB,不需要后缀名 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; // 2.1创建SB描述的控制器 // 方法一:instantiateInitialViewController根据初始化控制器创建SB描述的控制器,即SB中箭头所指的控制器// ViewController *vc = [sb instantiateInitialViewController]; // 方法二:根据控制器的SB ID创建制定的控制器(需在SB中指定控制器的Storyboard ID) ViewController *vc = [sb instantiateViewControllerWithIdentifier:@"org"]; // 2.2设置window的根控制器 self.window.rootViewController = vc; // 3.显示窗口 [self.window makeKeyAndVisible]; return YES;}
2.通过Xib加载控制器
- 需要先设置项目配置文件中不指定storyboard
// 程序启动完毕后调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1.创建UIWindow self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 2.创建根控制器(通过Xib创建) // 2.1指定Xib名称创建控制器// ViewController *vc = [[ViewController alloc] initWithNibName:@"ZJTestOne" bundle:nil]; // 2.2不指定xib名称创建控制器 ZJTestViewController *vc = [[ZJTestViewController alloc] init]; // 1.判断下nibName有没有值,如果有值,就会去加载nibName指定的xib // 2.如果nibName为空,会先去查找有没有ZJTestView.xib,如果有就去加载 // 3.如果没有ZJTestView.xib.xib,就会去加载根类名同名的xib:ZJTestViewController.xib // 4.如果还没有找到,就生成一个空的view self.window.rootViewController = vc; // 3.显示窗口 [self.window makeKeyAndVisible]; return YES;}
3.控制器View的创建
- 控制器的View是懒加载的,只有在需要使用的时候才会创建(即只有在调用了View的getter方法时才会创建view)
- view的创建原理:
-(UIView * __nonnull)view{ if (_view == nil) { // 记载控制器的View [self loadView]; // 控制器的View记载完毕 [self viewDidLoad]; } return _view;}
loadView方法
- 什么时候调用:当第一次使用控制器的view的时候就会调用
- 作用:加载控制器的View,自定义控制器的View
当指定了从storyboard和Xib加载控制器时,默认实现如下方法
-(void)loadView{ [super loadView];}
- 一旦在控制器中重写了loadView方法,将不会加载storyboard和Xib的View,会根据loadView中的代码自定义View
// 自定义控制器的View-(void)loadView{ self.view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.view.backgroundColor = [UIColor grayColor]; [self.view addSubview:[UIButton buttonWithType:UIButtonTypeContactAdd]];}
4.控制器的view的默认背景色
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1.创建UIWindow self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 设置背景颜色 self.window.backgroundColor = [UIColor yellowColor]; // 添加按钮控件 UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd]; btn.frame = CGRectMake(200, 200, btn.frame.size.width, btn.frame.size.height); [self.window addSubview:btn]; // 2.创建根控制器 UIViewController *vc = [[UIViewController alloc] init]; // 设置view的透明度为0,即完全透明时可以穿透View点击到btn(alpha<=0.01,代表控件完全透明)// vc.view.alpha = 0; // 若不设置透明度,我们点击不了按钮,证明View不是透明的,若是设置透明度接近完全透明可以实现和不设置透明度一样的效果,可以证明view的默认是接近完全透明的颜色,系统默认为[UIColor clearColor]// vc.view.alpha = 0.02;//等同于下面的颜色设置 vc.view.backgroundColor = [UIColor clearColor]; self.window.rootViewController = vc; // 3.设置window可见 [self.window makeKeyAndVisible]; return YES;}
0 0
- IOS开发概述-09.UIController和控制器的View
- IOS开发之UIController生命周期
- IOS开发之UIController生命周期
- iOS开发之控制器View的创建
- IOS uicontroller
- iOS开发UI篇—控制器的View的创建
- iOS开发UI篇—控制器的View的创建
- iOS开发UI篇—控制器的View的创建
- iOS开发UI篇—控制器的View的创建
- iOS开发UI篇—控制器的View的创建
- iOS开发UI篇—控制器的View的创建
- ios开发之控制器View的多种创建 -- 详解
- 【iOS开发】获取当前view(视图)所在的Controller(控制器)
- iOS开发之获取view所在的控制器
- iOS 控制器View的生命周期
- 【iOS开发-73】创建控制器的3种方式、深入了解view的创建和加载顺序
- Interface Builder 和UIController的联系
- 【iOS开发-24】导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- Unique Path II
- UVA 12437 Kisu Pari Na 2
- 计算机字符编码
- 安装Tomcat,过程中需要配置的环境变量及遇到的问题
- HDU5326-Work (建反图,遍历)
- IOS开发概述-09.UIController和控制器的View
- python内置函数(三)
- linux中文显示乱码问题
- 【进阶android】Volley源码分析——Volley的工具【StringRequest】
- 软件测试面试题-简答题
- 实现Javascript/css与HTML的分离
- 欧拉函数+中国剩余定理
- html5之创建离线Web应用程序
- java.lang.IllegalStateException: getOutputStream() has already been called for this response 分类: 异常