iOS UI的动态布局
不管是做iOS还是Android的开发,我想UI这块都是个大麻烦,任何客户端编程都是如此,我们要做的就是尽量减少我们工作的复杂度,这样才能更轻松的工作。
在ios开发中Xcode虽然自带了强大的IB(Interface Builder)用来开发UI,但这只是静态的,遇到复杂的界面还是需要用代码来动态的布局。
1. 例如常常会有动态内容高度和宽度的计算。
2. 几个视图的排版。
3.还有的视图是根据内容情况进行显示的。
比如一个商家页面有活动的时候,会显示活动,没有活动的时候这个视图是隐藏的,这样布局起来就会非常麻烦,在这里我们都可以很简单的解决,只需要几行代码而已。
例如下面这种情况:
我们经常要根据内容去动态计算控件的高度,比如一个UILabel控件,常常要显示多行内容,并且计算出总高度,如果每个UILabel要多行显示,都要写这么一段代码是非常痛苦的,看代码如下:
我想大家一定写过很多这样的代码吧,那么我可以告诉你,以后你只需要写一行代码即可:
当然这里只是把上面那段代码进行了封装而已,没什么大不了的,当然以后还有很多很多的这样的封装:
你还在使用CGRect frame = ...,然后去设置坐标位置,宽度和高度吗?
如果有了这个呢,left, top,bottom,right, width, height的封装,是不是布局起来更方便了呢?
这里self 是一个UIView,当添加了label和photoView之后,调用[self autoHeight]就可以自动计算并设置self的高度。
下面是上面几个方法的源码:
头文件:
实现类文件:
在UIView作为许多子控件的容器的时候,首先我们需要动态的计算出UIView下的所有子控件的高度,并布局排列好,然后我们还要把作为容器的UIView的高度调整到刚好包裹着所有子控件,不会过矮,也不会过高,这个在开发中也是个十分麻烦的事情,这里我们要怎么做呢?
看上图除了要将UILabel自适应高度(上一篇文章已讲)以外,还要将在UILabel外的那个白色的框,即一个带白色背景色的UIView的高度也进行
自适应,如果这要写代码去做的画,也比较麻烦。
看看下面的代码如何解决:
这里显示活动内容的UILabel名字叫_huodongLabel,显示推荐内容的UILabel叫_tuijianContentLabel
显示活动的UIView叫_secondView, 显示推荐的UIView叫_thridView,
先计算子控件的高度,然后再计算付控件的高度,这里就能达到整个UIView自适应高度了,仅仅只需2行代码。
代码贴出来:
转自:http://blog.csdn.net/keezhong/article/details/20455541 感谢作者