iOS UILabel控件默认文字位置是居中的,如图所示:
但是我们经常碰到这样的需求,希望文字向上置顶,或者向下置底,但是很遗憾,iOS API中并没有提供相应的属性和方法,需要我们手动设置。
利用 分类(category)为UILabel添加属性 isTop 和 isBottom来控制文字是否置顶和置底。
实现:利用往文字后面活前面下面添加”\n”来实现文字填充满整个UILable控件实现置顶/置顶效果
.h文件
#import <UIKit/UIKit.h>
@interface UILabel (TextAlign)
@property (nonatomic, assign) BOOL isTop;
@property (nonatomic, assign) BOOL isBottom;
@end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
.m文件
#import "UILabel+TextAlign.h"
@implementation UILabel (TextAlign)
-(void)setIsTop:(BOOL)isTop {
if (isTop) {
CGSize fontSize = [self.text sizeWithFont:self.font];
//控件的高度除以一行文字的高度
int num = self.frame.size.height/fontSize.height;
//计算需要添加换行符个数
int newLinesToPad = num - self.numberOfLines;
self.numberOfLines = 0;
for(int i=0; i<newLinesToPad; i++)
//在文字后面添加换行符"/n"
self.text = [self.text stringByAppendingString:@"\n"];
}
}
-(void)setIsBottom:(BOOL)isBottom {
if (isBottom) {
CGSize fontSize = [self.text sizeWithFont:self.font];
//控件的高度除以一行文字的高度
int num = self.frame.size.height/fontSize.height;
//计算需要添加换行符个数
int newLinesToPad = num - self.numberOfLines;
self.numberOfLines = 0;
for(int i=0; i<newLinesToPad; i++)
//在文字前面添加换行符"/n"
self.text = [NSString stringWithFormat:@" \n%@",self.text];
}
}
@end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
使用方法:
导入头文件
#import "UILabel+TextAlign.h"
- 1
然后设置属性
//置顶
self.lb.isTop = YES;
//置底
self.lb.isBottom = YES;
- 1
- 2
- 3
- 4
- 5
- 6