zoukankan      html  css  js  c++  java
  • iOS UILabel设置居上对齐,居中对齐,居下对齐

    在iOS中默认的UILabel中的文字在竖直方向上仅仅能居中对齐,博主參考国外站点。从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐。详细例如以下:

    1. //  
    2. //  myUILabel.h  
    3. //    
    4. //  
    5. //  Created by yexiaozi_007 on 3/4/13.  
    6. //  Copyright (c) 2013 yexiaozi_007. All rights reserved.  
    7. //  
    8.   
    9. #import <UIKit/UIKit.h>  
    10. typedef enum  
    11. {  
    12.     VerticalAlignmentTop = 0, // default  
    13.     VerticalAlignmentMiddle,  
    14.     VerticalAlignmentBottom,  
    15. } VerticalAlignment;  
    16. @interface myUILabel : UILabel  
    17. {  
    18. @private  
    19. VerticalAlignment _verticalAlignment;  
    20. }  
    21.   
    22. @property (nonatomic) VerticalAlignment verticalAlignment;  
    23.   
    24. @end  

    1. //  
    2. //  myUILabel.m  
    3. //    
    4. //  
    5. //  Created by yexiaozi_007 on 3/4/13.  
    6. //  Copyright (c) 2013 yexiaozi_007. All rights reserved.  
    7. //  
    8.   
    9. #import "myUILabel.h"  
    10.   
    11. @implementation myUILabel  
    12. @synthesize verticalAlignment = verticalAlignment_;  
    13.   
    14. - (id)initWithFrame:(CGRect)frame {  
    15.     if (self = [super initWithFrame:frame]) {  
    16.         self.verticalAlignment = VerticalAlignmentMiddle;  
    17.     }  
    18.     return self;  
    19. }  
    20.   
    21. - (void)setVerticalAlignment:(VerticalAlignment)verticalAlignment {  
    22.     verticalAlignment_ = verticalAlignment;  
    23.     [self setNeedsDisplay];  
    24. }  
    25.   
    26. - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines {  
    27.     CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];  
    28.     switch (self.verticalAlignment) {  
    29.         case VerticalAlignmentTop:  
    30.             textRect.origin.y = bounds.origin.y;  
    31.             break;  
    32.         case VerticalAlignmentBottom:  
    33.             textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height;  
    34.             break;  
    35.         case VerticalAlignmentMiddle:  
    36.             // Fall through.  
    37.         default:  
    38.             textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0;  
    39.     }  
    40.     return textRect;  
    41. }  
    42.   
    43. -(void)drawTextInRect:(CGRect)requestedRect {  
    44.     CGRect actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines];  
    45.     [super drawTextInRect:actualRect];  
    46. }  
    47.   
    48.   
    49. @end  

    在使用时:

    1. lbl_mylabel = [[myUILabel alloc] initWithFrame:CGRectMake(20, 50, 150, 600)];  
    2. UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"halfTransparent.png"]];//使用半透明图片作为label的背景色  
    3. lbl_mylabel.backgroundColor = color;  
    4. lbl_mylabel.textAlignment = UITextAlignmentLeft;  
    5. lbl_mylabel.textColor = UIColor.whiteColor;  
    6. lbl_mylabel.lineBreakMode = UILineBreakModeWordWrap;  
    7. lbl_mylabel.numberOfLines = 0;  
    8. [lbl_mylabel setVerticalAlignment:VerticalAlignmentTop];  
    9. [self addSubview:lbl_mylabel]; 

  • 相关阅读:
    响应式布局
    CSS3过渡
    CSS3背景
    CSS渐变
    CSS3选择器
    CSS3
    自定义指令
    键盘修饰符
    过滤器
    v-if与v-show区别
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7357279.html
Copyright © 2011-2022 走看看