Not just

文中示例的项目地址:github

主要记录一些与StoryBoard相关的东西.目录如下:

 - StackView

 - StoryBoard Reference 

 - Scene Dock

 - custom segue 

 - unwind segue 

 - something special


1.stackView

自动对其内部的视图作约束,当内部某视图hidden == true时,自动将其隐藏,其它视图约束依次修改。

使用场合:

   A:显示一组相似视图:比如一横排按钮等;

   B:显示一组布局大致相同视图;

   C:运行时动态插入或删除视图,并保证优美的约束.

  (使用场合的demo在文章开头的地址中)

Not just<what's new in StoryBoard>_第1张图片
StackView属性

说明:

   1.插入一个UIView,系统会自动对其布局,也可以手动设置约束;

   2.若视图已存在,可以通过hidden属性使其更新视图布局.

   3.如果出现约束警告,且无法通过update constraints删除,可以尝试在警告视图中放入一个子视图再移除,或者更新下stackview的Distribution

   4.如果动态更新stackView的视图,控制台会打印大量的过渡约束警告:将轴向固定约束的优先级改为750即可

一个简单练习:stackView_camera

2.StoryBoard Reference

在storyBoard中添加对另外一个storyBoard中的引用,从而两者实现交互。

解决问题:团队合作造成的IB冲突;庞大的IB管理困难;多个IB文件无法拖线,等.

使用场合:

    1.拆分StoryBoard

             Editor -> Refactor to StoryBoard

   2:多个StoryBoard互相拖线

            StoryBoard拖放一个StoryBoard Reference控件;

            设置其StoryBoard名称(对应StoryBoard文件名mmm)和Reference ID(对象具体的控制器的ID:newID),则此控件代表了mmm.StoryBoard文件下的newID控制器

详情见项目地址....

3.Scene Dock


Not just<what's new in StoryBoard>_第2张图片
scene Dock

使用场合:

      1.tableHeaderView

      2.tableView cell 选中状态

      3.特定情况下才显示的view

使用方式:

     1.拖任意一个属于UIView子类的视图到控制器的Dock栏; 

     2.布局该视图....(可以使用Auto Layout);

     3.将该视图拖到控制器中 Outlet

     4.在需要显示的地方addSubView 或者 =(注意设置frame或AutoLayout)

注意:

     同一个scene dock只能同时出现一份;

4.custom segue


Not just<what's new in StoryBoard>_第3张图片
自定义segue

类似于自定义专场动画。

1.自定义一个类,继承自UIStoryboardSegue;

2.重写其perform方法,设置其目标控制器的转场代理为自身 UIViewControllerTransitioningDelegate;

3.实现转场协议的代理方法:返回自定义的专场动画类实例;

4.实现一个转场动画类(第三步需要返回的类的实例),遵守动画转场协议

UIViewControllerAnimatedTransitioning

          .动画持续时间

         .动画的出现形式

                  获取fromVC fromView toVC toView;

                 根据实际情况自己手动写UIView动画;

                 需要transitionContext.containerView()?.addSubview

                 结束后必须调用transitionContext.completeTransition(true)

说明:

1.SJCustomSegue: UIStoryboardSegue

         自定义的segue,用于转场

2.UIViewControllerTransitioningDelegate

         转场目标控制器的动画器由该代理设置

3.UIViewControllerAnimatedTransitioning

       动画控制器的协议,必须实现其两个方法,才能算一个动画

5.unwind segue

使用场景:

        实现栈顶控制器回退到任意控制器.

unwind segue


使用方式:

           1.在需要被跳转的控制器中实现 anyName(para:UIStoryBoardSegue) ->Void{}方法

                  需要添加@IBAction前缀;空方法即可,不需要任何代码实现

          2.拖拽跳转触发按钮到其自身控制器dock栏的exit键;

          3.在弹出的菜单中,选中希望跳转的控制器中实现的第一步的方法,即可


关于知识点,暂时介绍到这里,下面分享一些StoryBoard中的小技巧,随时补充中。。。

6.something special

总结的一些小技巧。  

  1.在storyBoard中创建tableView的tableHeaderView

         A.拖拽任意一个视图到tableView最上方即可。

                    缺点:其子视图不能在自定义类中拖线,但可以直接拖到控制器

         B.scene dock,好用不说了

    2.在storyBoard中创建tableView的HeaderView

           A.纯代码,xib不说了

           B.scene dock 不说了

          c.tableViewCell.contentView 棒极了

    3.如何让section悬停,或者不悬停

           设置tableview的style:plain or group

    4.某个较深的界面需要多次调试

       设置项目的Main Interface为当前控制器,必要时构造一些假数据

    5.过渡约束(控制台打印一堆信息)

        设置约束的优先级,简直一抓一个准。

    6.在属性面板增加属性(比如圆角,borderColor,borderWidth等)

      @IBInspectable   属性前加上改关键词,不解释

待续。。。。

你可能感兴趣的:(Not just)