经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
(转)iOS学习——UIlabel设置行间距和字间距
来源:cnblogs  作者:mukekeheart  时间:2019/1/4 9:21:36  对本文有异议

  在iOS开发中经常会用到UIlabel来展示一些文字性的内容,但是默认的文字排版会觉得有些挤,为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节。

  比如一个Label的默认间距效果是这样:

然后用一个封装起来的Category来调整这部分文字的行间距,其中5.0就是我自定义的文字间距:

  1. [UILabel changeLineSpaceForLabel:cell.describeLabel WithSpace:5.0];

调整后的效果是这样的:

这是一个UILabel 的Category,他的内部实现是这样的:

UILabel+ChangeLineSpaceAndWordSpace.h

  1. #import <UIKit/UIKit.h>
  2.  
  3. @interface UILabel (ChangeLineSpaceAndWordSpace)
  4. /**
  5. * 改变行间距
  6. */
  7. + (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space;
  8. /**
  9. * 改变字间距
  10. */
  11. + (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space;
  12. /**
  13. * 改变行间距和字间距
  14. */
  15. + (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace;
  16. @end

UILabel+ChangeLineSpaceAndWordSpace.m

  1. #import "UILabel+ChangeLineSpaceAndWordSpace.h"
  2.  
  3. @implementation UILabel (ChangeLineSpaceAndWordSpace)
  4. + (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space {
  5. NSString *labelText = label.text;
  6. NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
  7. NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
  8. [paragraphStyle setLineSpacing:space];
  9. [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
  10. label.attributedText = attributedString;
  11. [label sizeToFit];
  12. }
  13. + (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space {
  14. NSString *labelText = label.text;
  15. NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText attributes:@{NSKernAttributeName:@(space)}];
  16. NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
  17. [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
  18. label.attributedText = attributedString;
  19. [label sizeToFit];
  20. }
  21. + (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace {
  22. NSString *labelText = label.text;
  23. NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText attributes:@{NSKernAttributeName:@(wordSpace)}];
  24. NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
  25. [paragraphStyle setLineSpacing:lineSpace];
  26. [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
  27. label.attributedText = attributedString;
  28. [label sizeToFit];
  29. }
  30. @end

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号