iOS的UILabel设置居上对齐,居中对齐,居下对齐

来源:互联网 发布:淘宝支付宝怎么开通 编辑:程序博客网 时间:2024/05/22 15:48

在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,博主参考国外网站,从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐。具体如下:

////  myUILabel.h//  ////  Created by yexiaozi_007 on 3/4/13.//  Copyright (c) 2013 yexiaozi_007. All rights reserved.//#import <UIKit/UIKit.h>typedef enum{    VerticalAlignmentTop = 0, // default    VerticalAlignmentMiddle,    VerticalAlignmentBottom,} VerticalAlignment;@interface myUILabel : UILabel{@privateVerticalAlignment _verticalAlignment;}@property (nonatomic) VerticalAlignment verticalAlignment;@end

////  myUILabel.m//  ////  Created by yexiaozi_007 on 3/4/13.//  Copyright (c) 2013 yexiaozi_007. All rights reserved.//#import "myUILabel.h"@implementation myUILabel@synthesize verticalAlignment = verticalAlignment_;- (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:(NSInteger)numberOfLines {    CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];    switch (self.verticalAlignment) {        case VerticalAlignmentTop:            textRect.origin.y = bounds.origin.y;            break;        case VerticalAlignmentBottom:            textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height;            break;        case VerticalAlignmentMiddle:            // Fall through.        default:            textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0;    }    return textRect;}-(void)drawTextInRect:(CGRect)requestedRect {    CGRect actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines];    [super drawTextInRect:actualRect];}@end

在使用时:

    lbl_mylabel = [[myUILabel alloc] initWithFrame:CGRectMake(20, 50, 150, 600)];    UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"halfTransparent.png"]];//使用半透明图片作为label的背景色    lbl_mylabel.backgroundColor = color;    lbl_mylabel.textAlignment = UITextAlignmentLeft;    lbl_mylabel.textColor = UIColor.whiteColor;    lbl_mylabel.lineBreakMode = UILineBreakModeWordWrap;    lbl_mylabel.numberOfLines = 0;    [lbl_mylabel setVerticalAlignment:VerticalAlignmentTop];    [self addSubview:lbl_mylabel];



原创粉丝点击