iOS小技巧20-iOS UILabel 文字设置垂直居中、垂直靠上、垂直靠下,设置edgeInsets

来源:互联网 发布:mac补丁 for vm10 编辑:程序博客网 时间:2024/04/28 17:28

iOS小技巧20-iOS UILabel 文字设置垂直居中、垂直靠上、垂直靠下,设置edgeInsets


VerticalCenterTextLabel.h

#import <UIKit/UIKit.h>typedef enum : NSUInteger {    myVerticalAlignmentNone = 0,    myVerticalAlignmentCenter,    myVerticalAlignmentTop,    myVerticalAlignmentBottom} myVerticalAlignment;@interface VerticalCenterTextLabel : UILabel@property (nonatomic) UIEdgeInsets edgeInsets;/** *  对齐方式 */@property (nonatomic) myVerticalAlignment verticalAlignment;@end


VerticalCenterTextLabel.m

#import "VerticalCenterTextLabel.h"@implementation VerticalCenterTextLabel- (void)setVerticalAlignment:(myVerticalAlignment)verticalAlignment{    _verticalAlignment= verticalAlignment;    [self setNeedsDisplay];}- (void)drawTextInRect:(CGRect)rect{    if (_verticalAlignment == myVerticalAlignmentNone)    {        [super drawTextInRect:UIEdgeInsetsInsetRect(self.bounds, self.edgeInsets)];    }    else    {        CGRect textRect = [self textRectForBounds:UIEdgeInsetsInsetRect(rect, self.edgeInsets) limitedToNumberOfLines:self.numberOfLines];        [super drawTextInRect:textRect];    }}- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines{    CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];    switch (_verticalAlignment) {        case myVerticalAlignmentTop:            textRect.origin.y = bounds.origin.y;            break;                    case myVerticalAlignmentBottom:            textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height;            break;                    case myVerticalAlignmentCenter:            textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0;            break;                    default:            break;    }    return textRect;}@end

 有问题请联系博主,邮箱:bestnathan@aliyun.com 
著作权声明:本文由http://www.bestnathan.com/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

0 0
原创粉丝点击