美文网首页
Not just<what's new in St

Not just<what's new in St

作者: Ashen_ | 来源:发表于2016-03-03 01:14 被阅读107次

    文中示例的项目地址:github

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

     - StackView

     - StoryBoard Reference 

     - Scene Dock

     - custom segue 

     - unwind segue 

     - something special


    1.stackView

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

    使用场合:

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

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

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

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

    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

    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

    自定义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<what's new in St

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