UIStoryboard

UIStoryboard

  1. 父类是NSObject
  • 没有成员变量,只有类创建方法
    + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(nullable NSBundle *)storyboardBundleOrNil;
    
  • Storyboard是重量级的,一般开发中由于多人开发使用Storyboard容易冲突,多用轻量级的xib

storyboard文件的认识

  • 作用:描述软件界面
  • 程序启动的简单过程
    • 程序一启动,就会加载Main.storyboard文件
    • 会创建箭头所指的控制器,并且显示控制器所管理的软件界面
  • 配置程序一启动就会加载的storyboard文件


    UIStoryboard_第1张图片
    storyboard启动设置.png

storyboard创建的控制器

  • 现在创建的控制器都不能处理事件,如果需要处理事件,需要自定义控制器。
    1. 原因:当通过storyboard创建控制器对象,默认都是系统自带的控制器对象,系统自带的是不能处理事件的。他不能写监听方法
    • 如果要让控制器能处理事件,需要自定义控制器,并设置storyboard中custom class类型。

系统加载指定storyboard的流程

  1. 程序启动完成时,会判断主界面是否设置了main storyboard,如果有,就会加载storyboard,自动创建好窗口和根控制器。
  • 如果设置的不是main storyboard,而是我们创建的其他storyboard,就会加载我们创建的。(如果没能成功,需要清除缓存)

  • 如果没有设置,就会根据对应的代码创建对应的storyboard及其描述的控制器。必须要有storyboard,创建UIStoryboard对象才有意义,alloc init创建UIStoryboard对象没有意义

    // 1.根据storyboard名称和地址创建storyboard,并创建描述的控制器
    // Name:storyboard文件名
    // nil = [NSBundle mainBundle]
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    // 2.根据标识符加载描述的控制器(已创建storyboard)
    // 标识不能乱传,必须storyboard有这个标识,否则报错
//    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"vc1"];;

    // 3.加载箭头指向的控制器(已创建storyboard)
    // instantiateInitialViewController:
    UIViewController *vc = [storyboard instantiateInitialViewController];

在storyboard中实现文字内容换行

  • 如何让storyboard\xib中的文字内容换行
    • 快捷键: option + 回车键
    • 在storyboard\xib输入\n是无法实现换行的
  • 在代码中输入\n是可以实现换行的
    self.label.text = @"534534534\n5345345\n5345";
    

在storyboard\xib中给UIScrollView子控件添加约束

  • 给添加一个UIView类型的子控件A(这将是UIScrollView唯一的一个子控件)
  • 设置A距离UIScrollView上下左右间距都为0
  • 往A中再添加其他子控件
UIStoryboard_第2张图片
Snip20151109_228.png
  • 上下滚动(垂直滚动)
    • 设置A的高度(这个高度就是UIScrollView的内容高度: contentSize.height)
UIStoryboard_第3张图片
Snip20151109_202.png
- 设置A在UIScrollView中左右居中(水平居中)
UIStoryboard_第4张图片
Snip20151109_203.png
  • 左右滚动(水平滚动)
    • 设置A的宽度(这个宽度就是UIScrollView的内容宽度: contentSize.width)
UIStoryboard_第5张图片
Snip20151109_231.png
- 设置A在UIScrollView中上下居中(垂直居中)
UIStoryboard_第6张图片
Snip20151109_230.png
  • 上下左右滚动(水平垂直滚动)
    • 设置A的宽度(这个宽度就是UIScrollView的内容宽度: contentSize.width)
    • 设置A的高度(这个高度就是UIScrollView的内容高度: contentSize.height)
UIStoryboard_第7张图片
Snip20151109_232.png
UIStoryboard_第8张图片
Snip20151109_229.png

在xib\storyboard中使用KVC示例

UIStoryboard_第9张图片
Snip20151108_177.png

多storyboard文件共同开发

  1. 开发中往往存在多个控制器,如果都在storyboard中拖控制器会使得管理非常复杂,而且界面混乱,非常不清晰。

  2. 可以通过xcode-editor-refactor to storyboard将多个控制器抽离成多个不同的storyboard文件,使用见下图


    UIStoryboard_第10张图片
    Snip20160527_6.png
  1. 效果图


    UIStoryboard_第11张图片
    Snip20160527_7.png
  2. 虽然可以这样操作,使storyboard结构变得清晰,但是依然不可以这样操作。建议多用xib + 代码方式开发

你可能感兴趣的:(UIStoryboard)