UILabel的文字默认是垂直居中显示的,而且UILabel并没有为我们提供设置垂直对齐方式的选项,所以要自己想办法了。

我的办法是给UILabel添加一个Category,来修改UILabel的绘制。话不多说上代码:

// UILabel+VerticalAlignment.h

#import

@interface UILabel (VerticalAlignment)

// 文字顶部对齐

- (void)textAlignmentTop;

// 文字底部对齐

- (void)textAlignmentBottom;

@end

// UILabel+VerticalAlignment.m

#import "UILabel+VerticalAlignment.h"

@implementation UILabel (VerticalAlignment)

- (void)textAlignmentTop {

self.numberOfLines = 0;

CGSize fontSize = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}];

double finalWidth = self.frame.size.width;

CGSize maximumSize = CGSizeMake(finalWidth, CGFLOAT_MAX);

CGRect stringSize = [self.text boundingRectWithSize:maximumSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:self.font} context:nil];

int lines = (self.frame.size.height - stringSize.size.height) / fontSize.height;

for (int i = 0; i < lines; i++) {

self.text = [self.text stringByAppendingString:@"\n"];

}

}

- (void)textAlignmentBottom {

self.numberOfLines = 0;

CGSize fontSize = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}];

double finalWidth = self.frame.size.width;

CGSize maximumSize = CGSizeMake(finalWidth, CGFLOAT_MAX);

CGRect stringSize = [self.text boundingRectWithSize:maximumSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:self.font} context:nil];

int lines = (self.frame.size.height - stringSize.size.height) / fontSize.height;

for (int i = 0; i < lines; i++) {

self.text = [NSString stringWithFormat:@" \n%@",self.text];

}

}

@end

uilabel 垂直居中对齐_给UILabel的文字添加垂直对齐的方式相关推荐

  1. html5中底部对齐怎么写,css设置元素底部垂直对齐

    css中怎么让div里面的文字底部对齐 两种办法,第一种可以作为默认选择.两种办法都可以让文字底部对齐. css如何使div里面的文字垂直对齐 页面里有五段文字/图片,我想使每个部分的文字,像旁边的图 ...

  2. word分散对齐调整宽度_Word中文字很难对齐?有了这4个方法,2秒可对齐Word中所有文字...

    在使用Word的时候,不少人有这样的烦恼:Word中的文字对齐不了,浪费了好多时间,还是弄不好.那么今天小编就来分享几个好用的Word中文字对齐的方法,下面就一起来看看吧~ 一.简单操作 1.分散对齐 ...

  3. android文字与图片底部对齐,ImageView 图片和 TextView 文字的底部对齐

    有时我们需要做到大文字小图片在一行显示,并且图片跟文字的底部对齐,如图: 以 RelativeLayout 为例: 1. 当 ImageView 设置了 alignBottom 属性,对齐的方式是这样 ...

  4. html如何将段落对齐,如何用CSS设置段落的垂直对齐(附代码)

    在浏览网页时,经常看到一些段落他是垂直对齐的,今天这篇文章就和大家讲讲如何用CSS设置段落的垂直对齐,有需要的朋友可以参考一下,希望对你有所帮助. CSS中通过属性vertical-align来设置段 ...

  5. html定义字体纵向对齐,HTML5 Canvas的文本如何实现垂直对齐

    垂直对齐,使用CSS很容易实现,如果想在HTML5 Canvas中实现垂直对齐,如何设置呢,这就是今天要分享的笔记. HTML画布垂直对齐的文本,我们可以使用的textBaseline在画布范围内的属 ...

  6. 代码居中对齐_一篇文章带你了解CSS对齐方式

    一.居中 1. 居中对齐元素 将块元素水平居中对齐(像 ) , 使用 margin: auto; 设置元素的宽度将阻止它伸展到容器的边缘. 然后元素将占用指定的宽度,剩下的空间将平分在两个边距之间: ...

  7. php图片文字垂直对齐,记一次解决字体图标垂直对齐问题的过程

    最近处理了一个字体图标没有在容器中垂直居中的样式问题.原本以为,只是 css 写的不正确,实际却并没有那么简单. 一番波折后,最终发现,是因为一处小细节,挖出了个大坑. 在处理问题的整个过程中,一方面 ...

  8. CSS span标签中文字水平垂直对齐

    1.text-align: center--水平居中 仅对文字.图片.按钮等行内元素有效(display设置为inline或inline-block等)进行水平居中 2.height:60px;lin ...

  9. wpf toolbar右对齐_侧方停车是与旁车对齐还是反光镜对B柱?有什么停车技巧吗

    虽然考证前在驾校狠练了不少倒车入库,但是等到实际开车的时候,停车还是不少新手司机最头疼的问题. 你问的,侧方停车是两车对齐,还是看反光镜,其实都是可以的: 两车对齐侧方停车: 第一步:将车开过目标停车 ...

最新文章

  1. mysql 分库分表,真的能支持服务无限扩容么?
  2. java socket负载均衡_Java Socket分发服务负载均衡
  3. manjaro笔记本显卡驱动_从入门到高端!AMD Radeon RX 500系列移动显卡全解析
  4. 神策 FM |「聚焦」细分市场是独角兽诞生的营销关键
  5. 优秀的硕博士们,他们的朋友圈都有什么特点?
  6. android studio初始化设置,Android studio 初始设置
  7. 程序员去交友网站找女友,没想到找到了这个...
  8. gdiplus判断一个点是否在圆弧线上_福建教师招聘考试小学数学面试教案:圆的认识...
  9. Z-BlogPHP导航主题模版源码 绿色完美版
  10. [2012.04.03] Windows Phone 上的汉语拼音以及多音字处理
  11. 一个长方体玻璃容器从里面量长宽_在玻璃鱼缸里用微型观叶植物布置景观,比盆景还要迷人...
  12. 计算机图形设计案例,9《计算机图形图像的设计的案例实训题.doc
  13. 走迷宫 6 6 c语言,游戏迷宫的实现
  14. 【vue】vue中如何实现SPA 单页面应用_09
  15. 你被选中了——晚会上的随机点名
  16. 年轻时放纵享乐,不要指望年老时一念向善
  17. hdu 5208 Where is Bob
  18. RC电路 波形分析
  19. encapsulation dot1q vlan-id命令
  20. 下载阿里云OSS上的文件及文件夹

热门文章

  1. 移动硬盘由于IO设备错误,无法运行此项请求文件怎样恢复
  2. 【MySQL】可重复读模式下 unique key失效案例
  3. linux下的nodejs安装
  4. 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息]
  5. mysql索引无效且sending data耗时巨大原因分析
  6. UA MATH524 复变函数13 奇点与留数
  7. 在Wireshark中查找数据包
  8. jquery $.each()函数编程实例五则图解
  9. jQuery 要点总结
  10. React 学习总结