多个大小不同的UILabel底部对齐的方法
来源:互联网 发布:老男孩linux运维2017 编辑:程序博客网 时间:2024/05/20 06:28
原文链接:http://blog.csdn.net/hjaycee/article/details/48393455
在界面设计中,经常有这样的需求,比如一个商品的价格是88元,88的字体设置的很大,元的字体设置的很小,要求底部对齐。
但是即便是使用Autolayout自动得到label的大小,在设置label的背景色后会发现label的上下方都有内边距,这是因为这个内边距本身就包括在字体的尺寸内的。
那么如何得到字体实际显示的大小呢?我在UIFont中找到了两个属性:ascender、capHeight。第一个可以得到中文字体的实际显示大小,第二个可以得到英文字母和数字的实际显示大小。
最后附上例子:
// HJBottomAlignmentLabel.h#import <UIKit/UIKit.h>@interface HJBottomAlignmentLabel : UIView- (void)addText:(NSString *)text Font:(UIFont *)font TextColor:(UIColor *)textColor IsChinese:(BOOL)isChinese;@end// HJBottomAlignmentLabel.m#import "HJBottomAlignmentLabel.h"@implementation HJBottomAlignmentLabel- (void)addText:(NSString *)text Font:(UIFont *)font TextColor:(UIColor *)textColor IsChinese:(BOOL)isChinese{ UILabel *label = [UILabel new]; label.text = text; label.font = font; label.textColor = textColor; label.backgroundColor = [UIColor clearColor]; [self addSubview:label]; CGSize size = [text sizeWithFont:font]; CGFloat labelH = isChinese ? font.ascender : font.capHeight + 0; self.frame = CGRectMake(0, 0, self.bounds.size.width + size.width, MAX(labelH, self.bounds.size.height)); label.frame = CGRectMake(self.bounds.size.width - size.width, self.bounds.size.height - labelH, size.width, labelH);}@end// 调用HJBottomAlignmentLabel *hjLabel = [HJBottomAlignmentLabel new];[hjLabel addText:@"88" Font:[UIFont systemFontOfSize:200] TextColor:[UIColor redColor] IsChinese:NO];[hjLabel addText:@"元" Font:[UIFont systemFontOfSize:40] TextColor:[UIColor blueColor] IsChinese:YES];hjLabel.center = self.view.center;hjLabel.backgroundColor = [UIColor greenColor];[self.view addSubview:hjLabel];
0 0
- 多个大小不同的UILabel底部对齐的方法
- iOS开发UILabel篇:两个字号大小不同的Label如何做到文字底部对齐
- 不同大小的字体底部对齐
- 不同高度的图片 底部对齐方法
- 实现两个不同高度的UILabel的文字底部相对于下划线对齐。不是很简单吗? 是吗?你敢按你常规方法试试让你那火眼金睛的设计、美工去瞧瞧???
- 不同大小的字中部对齐
- UILabel使用不同的大小和字体、颜色
- 3种方法实现UILabel的左上角对齐显示文字
- UILabel的顶对齐解决方法
- UILabel 的文字顶部对齐
- UILabel的两段对齐
- UILabel的文字顶部对齐
- 根据UILabel内容调节UILabel的大小
- linux 查看不同目录的多个文件夹大小
- UILabel的text顶部或底部显示
- 底部放5个RadioButton,点击切换不同的Fragment
- IOS UILabel垂直顶部,中间,底部对齐
- UILabel设置顶、左、右、底部对齐
- 关于Deadlock的例子
- EJB杂项
- Map遍历
- leetcode刷题,总结,记录,备忘 107
- LA 3989 - Ladies' Choice【稳定婚姻问题】
- 多个大小不同的UILabel底部对齐的方法
- 排序
- leetcode hIndex implemented with python
- 第二周项目三—体验复杂度(2)
- Scrum Meeting
- 0 基础怎样开始学习做网站 (Ruby on Rails)?
- document 和 window.document
- 如何设置显示Linux vim编辑器的行号?修改Table键跳过的格数?
- 嗯!!!