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

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

1.新建一个类VerticalAlignmentLabel.h继承自UILabel

2.

//

//  VerticalAlignmentLabel.h

//  inface

//

//  Created by huangzengsong on 15/5/10.

//  Copyright (c) 2015年 huangzs. All rights reserved.

//

 

#import <UIKit/UIKit.h>

 

 

typedef enum

{

    VerticalAlignmentTop = 0, // default

    VerticalAlignmentMiddle,

    VerticalAlignmentBottom,

} VerticalAlignment;

@interface VerticalAlignmentLabel : UILabel

 

{

@private

    VerticalAlignment _verticalAlignment;

}

 

@property (nonatomic) VerticalAlignment verticalAlignment;

 

@end

 

3.

//

//  VerticalAlignmentLabel.m

//  inface

//

//  Created by huangzengsong on 15/5/10.

//  Copyright (c) 2015年 huangzs. All rights reserved.

//

 

#import "VerticalAlignmentLabel.h"

 

@implementation VerticalAlignmentLabel

@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];

}

 

 

 

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

    // Drawing code

}

*/

 

@end

 

4.调用时导入头文件

#import "VerticalAlignmentLabel.h"

5.

[self.DetailLabel setVerticalAlignment:VerticalAlignmentTop];

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。