关于自动布局的一些知识点
最近在做项目的时候,用自动布局来添加约束的时候出现了很多小问题,非常抓狂,通过这几天的练习和总结。填补了以前的一些知识盲点,对于自动布局的认识有了一点新的认识,但是还有很多地方需要去学习。
1.对于label,button,已经添加图片的image,xcode会自动为其生成一个默认文字内容和图片大小的宽和高。如果是一个空的view或者空的imageview,在设置x轴的约束时,需要在左右两边添加constrain约束来确定它的位置,但是如果是label只需要在一边添加约束就可以确定它的位置。
2.为了适应各种iphone屏幕的大小,我们需要在view上添加相对位置来保证控件的不变形。而最好的办法就是通过aspect比例缩放来确定它的相对位置。
3.在对一个控件添加了相对位置后,比如load和traling方向上添加后,在屏幕尺寸发生变化时,会自动拉伸控件的宽度来适配不同屏幕的大小。而connstrain约束的宽度会随着屏幕的大小,等比例的变化,从而使得屏幕中的控件位置并未畸变。
4.我在做项目的过程中,让我迷惑的问题是,所有的控件都需要进行等比例缩放来保证在不同屏幕的大小相对变化,而固定宽高会让控件变形,因此不再使用width,heigth,但是,在对多个已经添加文字的label添加两边的约束,但是这样添加约束,反而使得控件的约束出现了过多的冲突,弄的一团糟,其实,添加文字的label自身就有一定的宽高约束,过多的使用等比例约束反而让其出现变形,解决的办法就是设置好文字的大小,从而使得在屏幕上单边约束后在相应位置出现视图就可以了。
5.在做navigationbar这块内容的label布局时。由于我是通过自己拖view实现自己设定的navigationbar,所以一直想通过设定navigationbar与下面其他控件的大小在视图上等比例变化来实现,但是这样设置,为了实现navigationbar上的控件不变形,必须使得navigationbar上所有控件的heigth和width都依据navigationbar的高度和宽度的变化,等比例变化,一旦navigationbar上面的控件比较多,所有控件添加aspect等比例变化的设定,这将会是一个相当庞大的操作,特别是一些比较小的控件。所以,解决办法是:要么固定navigationbar的大小,从而保证navigationbar上所有的控件位置固定,如果自定义navigationbar上的控件相对比较少的话可以等比例设定,否则最好还是固定navigationbar的大小。这几天一直看自动布局,头大看大了。这个坑到这里暂时可以停息了。
6.另外,navigationbar在iphone所有尺寸的手机上,它的的大小似乎 都是一致的,都为64。