Objective-C Learning Notes - UILabel
UILabel
Base Attributes:
font
size
backgroundColor & align
UITextAlignmentLeft
UITextAlignmentCenter
UITextAlignmentRight
textColor
adjustsFontSizeToFitWidth
动态实现:
- (void)viewDidLoad { [super viewDidLoad]; //创建 UILabel 对象实例 UILabel *label = [[UILabel alloc]initWithFrame:self.view.bounds]; //赋值 label 显示的文本内容 label.text = @"This is a UILabel Demo,"; //设置字体和大小 label.font = [UIFont fontWithName:@"Arial" size:35]; //设置自提颜色 label.textColor = [UIColor yellowColor]; //设置字体对齐方式 label.textAlignment = NSTextAlignmentCenter; //设置该 UILabel 背景颜色 label.backgroundColor = [UIColor blackColor]; //设置分词??? label.lineBreakMode = NSLineBreakByWordWrapping; //行数限制??? label.numberOfLines = 0; //设置 frame CGSize size = [label.text sizeWithFont:label.font constrainedToSize:self.view.bounds.size lineBreakMode:label.lineBreakMode]; CGRect rect = label.frame; rect.size.height = size.height; label.frame = rect; [self.view addSubview:label]; // Do any additional setup after loading the view, typically from a nib. }
UILabelx 类实现垂直方向对齐:
UILabelx.h 文件:
#import <UIKit/UIKit.h> //我记得这个好像叫枚举类型 typedef enum { //垂直方向靠上对齐 VerticalAlignmentTop, //垂直方向居中对齐 VerticalAlignmentMiddle, //垂直方向靠底对齐 VerticalAlignmentBottom } VerticalAlignment; @interface UIlabelEx : UILabel { VerticalAlignment _verticalAlignment; } @property (nonatomic,assign) VerticalAlignment verticalAlignment; @end
UILabelx.m 文件:(妈的排版吃粑粑!!干嘛总省略在 self 后面的空格,你们就不能找个懂代码的来排版吗???)
#import "UIlabelEx.h" @implementation UIlabelEx @synthesize verticalAlignment = _verticalAlignment; //使用frame构造实例 -(id) initWithFrame:(CGRect)frame { if (self == [super initWithFrame:frame]) { self.verticalAlignment = VerticalAlignmentMiddle; } return self; } //设置文本显示类型 -(void)setVerticalAlignment:(VerticalAlignment)verticalAlignment{ _verticalAlignment = verticalAlignment; [self setNeedsDisplay]; } //重写父类 (CGRect) textRectForBounds: (CGRect)bounds limitedToNumberOfLines:(NSIterger)numberOfLines -(CGRect) textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines{ CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines]; //针对枚举变量 verticalAlignment 值计算 label text 的y 轴位置 switch (self.verticalAlignment) { //默认顶置, y 轴不变 case VerticalAlignmentTop: textRect.origin.y = bounds.origin.y; break; //底置, y 轴下移(整个 bounds 高度 + textRect 高度) case VerticalAlignmentBottom: textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height; break; //居中, y 轴下移(整个 bounds 高度 - textRect 高度)/2 case VerticalAlignmentMiddle: default: textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height)/2.0; } return textRect; } //重写父类 -(void) drawTextInRect:(CGRect)rect //这啥? -(void) drawTextInRect:(CGRect)rect{ CGRect realRect = [self textRectForBounds:rect limitedToNumberOfLines:self.numberOfLines]; [super drawTextInRect:realRect]; } @end
设置字体:
- (void)viewDidLoad { [super viewDidLoad]; UILabel *label = [[UILabel alloc] init]; label.frame = self.view.bounds; label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; label.text = @"good"; label.textAlignment = NSTextAlignmentCenter; label.backgroundColor = [UIColor blackColor]; label.textColor = [UIColor whiteColor]; label.font = [UIFont fontWithName:@"Zapfino" size:48]; [self.view addSubview:label]; // Do any additional setup after loading the view, typically from a nib. }
文本水平对齐:
- (void)viewDidLoad { [super viewDidLoad]; self.title = @"UITextAlignment"; self.view.backgroundColor = [UIColor blackColor]; UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(0, 10, 320, 30)]; UILabel *label2 = [[UILabel alloc]initWithFrame:CGRectMake(0, 50, 320, 30)]; UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(0, 90, 320, 30)]; label1.textAlignment = NSTextAlignmentLeft; label2.textAlignment = NSTextAlignmentCenter; label3.textAlignment = NSTextAlignmentRight; label1.text = @"UITextAlignmentLeft"; label2.text = @"UITextAlignmentCenter"; label3.text = @"UITextAlignmentRight"; label1.backgroundColor = [UIColor yellowColor]; label2.backgroundColor = [UIColor yellowColor]; label3.backgroundColor = [UIColor yellowColor]; [self.view addSubview:label1]; [self.view addSubview:label2]; [self.view addSubview:label3]; // Do any additional setup after loading the view, typically from a nib. }