需求:在UITableView中,一列head view和cell view需要居中、文字右对齐。意思是:head view中UILabel的文字是垂直居中对齐,这时候文字与UILabel的右边框有padding(内边距、缩进),而cell view中的文字右边与刚好也是需要有这个padding。这样整个表格既不浪费空间(如果是纯粹的左对齐或者右对齐,则浪费空间),而且还比较美观。
思路:众所周知,UIButton是可以设置UIEdgeInsets,文字、图片,都可以设置与UIButton的边框的内边距。但UILabel貌似没有这个属性可以设置,只有简单的对齐方式。这时肯定会想着,可以用UIButton代替UILabel,但问题又出现了,UIButton不能显示多行,也就是说UIButton只能显示一行文字,这样也没有UILabel灵活。所以还是回到UILabel上。
解决办法:
UILabel继承于UIView,绘图过程中会调用drawRect:(CGRect)rect方法,这个方法的参数rect,就是UILabel的frame,这时候我们已经有了UILabel的frame,如果再有文字与右边的padding值,我们就可以重写UILabel的drawRect方法,方