在iOS中默認的UILabel中的文字在豎直方向上只能居中對齊,自定義UILabel,實現了居上對齊,居中對齊,居下對齊。具體以下:atom
1 // 2 // myUILabel.h 3 // 4 // 5 // Created by yexiaozi_007 on 3/4/13. 6 // Copyright (c) 2013 yexiaozi_007. All rights reserved. 7 // 8 9 #import <UIKit/UIKit.h> 10 typedef enum 11 { 12 VerticalAlignmentTop = 0, // default 13 VerticalAlignmentMiddle, 14 VerticalAlignmentBottom, 15 } VerticalAlignment; 16 @interface myUILabel : UILabel 17 { 18 @private 19 VerticalAlignment _verticalAlignment; 20 } 21 22 @property (nonatomic) VerticalAlignment verticalAlignment; 23 24 @end
1 // 2 // myUILabel.m 3 // 4 // 5 // Created by yexiaozi_007 on 3/4/13. 6 // Copyright (c) 2013 yexiaozi_007. All rights reserved. 7 // 8 9 #import "myUILabel.h" 10 11 @implementation myUILabel 12 @synthesize verticalAlignment = verticalAlignment_; 13 14 - (id)initWithFrame:(CGRect)frame { 15 if (self = [super initWithFrame:frame]) { 16 self.verticalAlignment = VerticalAlignmentMiddle; 17 } 18 return self; 19 } 20 21 - (void)setVerticalAlignment:(VerticalAlignment)verticalAlignment { 22 verticalAlignment_ = verticalAlignment; 23 [self setNeedsDisplay]; 24 } 25 26 - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines { 27 CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines]; 28 switch (self.verticalAlignment) { 29 case VerticalAlignmentTop: 30 textRect.origin.y = bounds.origin.y; 31 break; 32 case VerticalAlignmentBottom: 33 textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height; 34 break; 35 case VerticalAlignmentMiddle: 36 // Fall through. 37 default: 38 textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0; 39 } 40 return textRect; 41 } 42 43 -(void)drawTextInRect:(CGRect)requestedRect { 44 CGRect actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines]; 45 [super drawTextInRect:actualRect]; 46 } 47 48 49 @end
在使用時:spa
1 lbl_mylabel = [[myUILabel alloc] initWithFrame:CGRectMake(20, 50, 150, 600)]; 2 UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"halfTransparent.png"]];//使用半透明圖片做爲label的背景色 3 lbl_mylabel.backgroundColor = color; 4 lbl_mylabel.textAlignment = UITextAlignmentLeft; 5 lbl_mylabel.textColor = UIColor.whiteColor; 6 lbl_mylabel.lineBreakMode = UILineBreakModeWordWrap; 7 lbl_mylabel.numberOfLines = 0; 8 [lbl_mylabel setVerticalAlignment:VerticalAlignmentTop]; 9 [self addSubview:lbl_mylabel];
轉載:http://blog.csdn.net/yexiaozi_007/article/details/8636522.net