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

来源:互联网 发布:暴走族 知乎 编辑:程序博客网 时间:2024/05/14 08:08

在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  {  @private  VerticalAlignment _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];  

转载自:http://blog.csdn.net/yexiaozi_007/article/details/8636522

0 0
原创粉丝点击