iOS UILabel 文字 置頂/置底 實現,iosuilabel
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
.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
使用方法:
匯入標頭檔
#import "UILabel+TextAlign.h"
然後設定屬性
//置頂self.lb.isTop = YES;//置底self.lb.isBottom = YES;
源碼免費:http://www.jinhusns.com/Products/Download/