storyboard、xib、autolayout杂谈

作者: 帅只是表象 | 来源:发表于2016-04-14 17:34 被阅读561次

    可视化的视图可以帮助我们有效、高效的开发应用。这篇文章就来分享一下几个注意事项。

    storyboard
    • 在storyboard中的tabbaritem的图片怎么改变大小呢? 这个问题我当时困扰了好几天,查了很久。都是说从


      这改变,但我试了试,并不行,当你点击模拟器中的tabbaritem时,图片会变小,多次点击会在变小,直到消失。后来我就问了我一个喜欢用storyboard的同事,他说这个无法改变,要美工重新做小点的图片就行了。

    • 一个项目可能要有数十个页面,不可能都放在一个storyboard中,这时有tabbarcontroller的storyboard怎么关联到其他的storyboard呢?
      我们可以通过


      来串起来。如这样:


      点击StoryboardReference在这个地方可以为它选择相应的storyboard
    • 一些小伙伴在使用storyboard时想使用静态的cell,确发现有时并不行,这是因为只有UITableViewController才可以,在UIViewController上添加UITableView是不行的。
    • 拖线跳转页面会掉用这个方法
    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {  
    }
    

    segue.destinationViewController这个就是当前控制器通过segue要跳转的控制器,利用这个属性可以进行正向传值

    xib
    • 在使用xib的时候,有可能你会发现你的视图不能拖动改变大小了。你会发现它的边缘是这样的
      而不是这样的

      这时你可以修改此处为Freeform
    • 注意建议你不要修改controller的view的大小,比如你把它变窄了看上去明显比屏幕窄,运行模拟器时发现依然是充满屏幕的,但是它的frame已经改变了,如果你在代码中用它的frame给别的控件定位的话就会不准,但如果你使用约束的话显示在屏幕上的效果依然正常。
    • 在使用xib创建cell时,我们常常只会一个xib对应一个cell视图。其实可以一个xib中创建多个cell视图,通过
    cell = [[[NSBundle mainBundle] loadNibNamed: owner: options:] objectAtIndex: ];
    

    从中取出对应index的cell,这样一个UITableView或一个UITableViewController只创建一个cellxib的话,文件就会少一些,看起来就会更简洁。
    可以根据indexPath设置不同的identifier。可以把创建Cell的过程放在Cell.m中,做成类方法,这样controller中的代码就会更少。


    autolayout
    • autolayout就是通过参照约束来确定一个控件的位置大小
    • 要注意的是
    • 要通过代码改变xib、storyboard中的控件约束的话,控件的.translatesAutoresizingMaskIntoConstraints=NO;
    • margin是边缘的意思,苹果建议我们的控件距离屏幕的边缘有一定的距离,而且不同尺寸的iphone的margin的值是不同的,如果你想让在不同尺寸上距离边缘的距离都相同的话,用代码改变就不要用带margin的参数,若用xib、storyboard添加约束,注意此处不要打勾

      再此奉上他人写的代码改变约束的文章
    • 我们不仅可以通过约束改变位置,也可以直接frame改变位置,这里请注意如果改变了frame的话,只是显示在屏幕上的位置改变了,而它的约束位置并没有改变,以它为参照添加约束的控件的位置也不会改变

    注:相关内容我会继续更新。如果想找一些iOS方面的代码可以关注我的简书,我会持续更新,大家一起探讨探讨
    在此谢谢大家阅读😊

    相关文章

      网友评论

      本文标题:storyboard、xib、autolayout杂谈

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