之前一直在做Android的开发工作。在对比Android的TextView和IOS 的UILabel中,发现IOS 提供的空间居然没有提供系统的设置内边距的api。
后面找了一些文章了解了一下如何设置UILabel内边距的解决方案。基本上都是需要重写UILabel,我是一个IOS开发的新手,而且项目时间又比较赶。所以在经过半个小时的思索中,我自己找到了一个比较好的解决方案,而且应该也算比较通用的,不需要通过编写任何的代码来实现。
使用xcode的autolayout来解决这个问题,其实非常的容易,大体的解决思路就是通过一个UIView 来嵌套一个UILabel 但是这里面的自动布局的约束操作会相对比较的复杂,建议如果想要使用这个方案实现UILabel内边距的读者,最好能对autolayout比较熟悉,大概的解决思路如下:
平常的应用开发中比较常见的案例就是聊天界面,聊天界面UITableView的cell中,一段文字都会带有一些图片或者颜色的背景。
步骤一
创建的UIView的布局约束为:上0,下0,左/右 0 ,如果想要做的好看点,最好能够设置一个左边或者右边的margin值。设置这个margin值也有一个需要注意的地方,例如这个margin值为65,那么这个约束的设定就是要大于或者等于65,防止文本过长,可以参考微信的做法,旁边一部分固定的宽度空白出来。
UIView的宽高值得权重也需要进行设定,将权重值1000改为较小的值例如100,这样自动布局才会去根据UIView内部的子控件的宽高来调整自己的宽高。
步骤二
在UIView父控件中添加一个文本控件UILabel 然后在布局约束上,让UILabel上下左右分别设定一个相对于父控件UIView的margin,这里就能实现一个类似文本内容内边距的样式。
接着需要注意的一个地方,就是文本控件的长宽值权重的问题,需要将权重值减小,才能让文本内容的长宽自适应。
文本的行数可以暂时设定以为较大数值例如100,这样文本能够自动换行。
通过以上的操作步骤,就能实现一个UILable内边距,无代码实现的解决方案。如果还有更好的解决方案,希望各位大神能够也进行留言,给小弟一个指点,不胜感激。
网友评论