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/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢