在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,自定义UILabel,实现了居上对齐,居中对齐,居下对齐。具体如下:
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
在使用时:
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