美文网首页
03-UI进阶(2)

03-UI进阶(2)

作者: cdd48b9d36e0 | 来源:发表于2016-12-07 23:33 被阅读14次

0610-控制器创建导航控制器

1. 一个IOS程序启动步骤(04-uiwindow)

  • 第一步加载main.m文件
  • 创建UIApplication
  • 创建UIApplicationDelegate,并且成为UIApplication代理
  • 开启主运行循环,保持程序一直在运行
  • 加载info.plist,判断有没有指定main.stroyboard,指定了就加载(这里判断的方法就是看General→DeploymentInfo→MainInterface有没有指定)
  • 第二步加载main.stroyboard(如果有的话),如果没有就用代码实现
  • 创建窗口
  • 加载main.storyboard,并且加载main.storyboard指定的控制器
  • 把新创建的控制器作为窗口的根控制器,让窗口显示出来

2. 区别(04-uiwindow)

self.window.rootViewController = vc;
[self.window addSubview:vc.view];

这两句的区别是前者会默认就有旋转功能

3. 关于window的若干说明(05-uiwindow补充)

  1. 下面这句代码有两个意思[self.window makeKeyAndVisible]
    makeKey的作用是把self.window设置为application的主窗口,可以用application.keyWindow属性查看;Visible的作用是让self.window可见,这里可以用self.window.hidden = YES来达到一样的效果
  2. self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]这句代码会把self.window加到application的windows数组里。常见的窗口有键盘和状态栏。
  3. window有个层级属性,值大的就显示在上面,self.window.windowLevel = UIWindowLevelStatusBar
    UIWindowLevelNormal < UIWindowLevelStatusBar < UIWindowLevelAlert

4. sb创建控制器view(07-LoadView)

  1. LoadView这个方法是用于重写控制器自身的view,比如一个控制器要是要用webView加载纯网页就可以重写这个方法,就不用self.view add了
  2. 重写的时候千万不要调用[super loadView],否则就是在做无用功,而且如果重写了这个方法,就不会去加载storyboard(xib)描述的控制器的View
  3. 在这里方法里重写时必须先初始化self.view,像这样self.view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];,而如果像这样self.view.backgroundColor = [UIColor redColor];上来就直接调用它的get方法会进入死循环(get方法又进入loadView方法
  4. loadView什么时候调用:第一次使用控制器的view的时候调用

5. 创建控制器view的完整版(09-控制器view的创建(xib))

  • 步骤1:是否重写了loadView
  • 步骤2:是否有sb文件
  • 步骤3:initWithNibName后面这个参数的xib文件是否存在
  • 步骤4:initWithNibName后面为nil时,MJView.xib是否存在
  • 步骤5:initWithNibName后面为nil时,MJViewController.xib是否存在
  • 步骤6:以上都不存在创建一个空的view

注意:只有控制器的init方法底层会调用initWithNibName:bundle:,所以用xib创建控制器的view时可以用init,但是用xib创建自定义控制的view则必须用initWithNibName:方法

6. 控制器view默认是clearColor(10-默认控制器view的颜色)

clearColor也是一种Color,且alpha默认为1,所以此时虽然看上去是透明的但是并不能穿过改view去点击下面的控件

7. 当控制器view的frame发生改变时,在viewDidLoad方法里打印此控制器的view的frame是不准确的,应该在viewWillAppear或者DidAppear里调用(11-控制器view懒加载)

8. 快捷键(14-导航控制器出栈)

在IB界面选中一个控件,同时按下option+command+return可以快速定位到该IB文件的m文件

相关文章

  • 03-UI进阶(2)

    0610-控制器创建导航控制器 1. 一个IOS程序启动步骤(04-uiwindow) 第一步加载main.m文件...

  • 03-UI进阶(7)

    0619-Quartz2D演练 1. 五种上下文及其输出目标 2. 应用场景 图片水印:防止盗图等 图片裁剪:比如...

  • 03-UI进阶(3)

    0612-私人通讯录数据存储 1. 关于Navigationcontroller(01-设置导航条的内容) 导航栏...

  • 03-UI进阶(1)

    0609-UIPickerView键盘处理 1. 01-聊天布局01-图片拉伸 pickerView选中某行的办法...

  • 03-UI进阶(4)

    0613-私人通讯录主流框架 1. block的快捷键inline(04-block讲解) 2. 图解沙盒各个文件...

  • 03-UI进阶(5)

    0616-事件处理 1. 什么时候用push什么时候用modal(01-modal简单使用) 上下级界面之间有联系...

  • 03-UI进阶(6)

    0617-Quartz2D 1. Quartz2D能干什么(03-基本图形绘制(画线)) 2. 绘图步骤 1.获取...

  • Kotlin 进阶之路 目录

    Kotlin 进阶之路 目录 Kotlin 进阶之路1 基础语法Kotlin 进阶之路2 集合类型Kotlin 进...

  • Fragment使用三部曲

    1.Fragment进阶 - 基本用法2.Fragment进阶-FragmentTransaction详解3.Fr...

  • JavaWeb编程实战宝典(6)___第6章 Struts2进阶

    第6章 Struts2进阶 第6章 Struts2进阶 6.1 认识Struts2的基本配置 6.1.1 配置we...

网友评论

      本文标题:03-UI进阶(2)

      本文链接:https://www.haomeiwen.com/subject/oipjmttx.html