storyboard、xib、autolayout杂谈

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

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杂谈)