您的位置:首页 > 产品设计 > UI/UE

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

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

[cpp] view
plaincopy

//

// 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

{

@private

VerticalAlignment _verticalAlignment;

}

@property (nonatomic) VerticalAlignment verticalAlignment;

@end

[cpp] view
plaincopy

//

// 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

在使用时:

[cpp] view
plaincopy

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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: