• 自定义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];

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

  • 相关阅读:
    STM32存储器知识的相关应用(IAP、Bit Banding)
    转:嵌入式编程(以STM32为例)中的volatile,const意义及应用场景
    STM32 :IAP实验 & 写入内部Flash
    modint
    poly
    小蒟蒻太蒻了
    volume 服务
    Vold分析
    文件系统属性详解
    PCI 百度百科
  • 原文地址:https://www.cnblogs.com/lxllanou/p/4010591.html
Copyright © 2020-2023  润新知