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

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

[cpp] view plaincopy

  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. #import <UIKit/UIKit.h>
  9. typedef enum
  10. {
  11. VerticalAlignmentTop = 0, // default
  12. VerticalAlignmentMiddle,
  13. VerticalAlignmentBottom,
  14. } VerticalAlignment;
  15. @interface myUILabel : UILabel
  16. {
  17. @private
  18. VerticalAlignment _verticalAlignment;
  19. }
  20. @property (nonatomic) VerticalAlignment verticalAlignment;
  21. @end

[cpp] view plaincopy

  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. #import "myUILabel.h"
  9. @implementation myUILabel
  10. @synthesize verticalAlignment = verticalAlignment_;
  11. - (id)initWithFrame:(CGRect)frame {
  12. if (self = [super initWithFrame:frame]) {
  13. self.verticalAlignment = VerticalAlignmentMiddle;
  14. }
  15. return self;
  16. }
  17. - (void)setVerticalAlignment:(VerticalAlignment)verticalAlignment {
  18. verticalAlignment_ = verticalAlignment;
  19. [self setNeedsDisplay];
  20. }
  21. - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines {
  22. CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];
  23. switch (self.verticalAlignment) {
  24. case VerticalAlignmentTop:
  25. textRect.origin.y = bounds.origin.y;
  26. break;
  27. case VerticalAlignmentBottom:
  28. textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height;
  29. break;
  30. case VerticalAlignmentMiddle:
  31. // Fall through.
  32. default:
  33. textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0;
  34. }
  35. return textRect;
  36. }
  37. -(void)drawTextInRect:(CGRect)requestedRect {
  38. CGRect actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines];
  39. [super drawTextInRect:actualRect];
  40. }
  41. @end

在使用时:

[cpp] view plaincopy

  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];
时间: 2024-11-08 02:07:09

iOS UILabel设置居上对齐,居中对齐,居下对齐的相关文章

自定义UILabel设置垂直方向的居上,居中,居下

IOS系统框架中UILabel的属性textAlignment只调整水平方向的居中,居左,居右,而没有垂直方向的调整.所以要自定义一个继承自UILabel的类,在类的实现文件中进行文字的重绘,达到垂直方向的位置调整. 新建一个类文件,继承自UILabel,头文件如下: #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger,VerticalAlignment){ VerticalAlignmentTop, VerticalAlignmentMiddl

iOS UiButton设置button上的图片和文字共存

在UIbutton中有是三个EdgeInsets的设置:ContentEdgeInsets.titleEdgeInsets.imageEdgeInsets UIEdgeInsetsMake 里面的四个参数表示距离上边界.左边界.下边界.右边界的距离,默认都为零,title/image在button的正中央 left.titleEdgeInsets = UIEdgeInsetsMake(3, -25, 0, 0); left.imageEdgeInsets = UIEdgeInsetsMake(0

iOS的UILabel设置居上对齐,居中对齐,居下对齐

在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,我从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐.具体如下: 1.新建一个类VerticalAlignmentLabel.h继承自UILabel 2. // //  VerticalAlignmentLabel.h //  inface // //  Created by huangzengsong on 15/5/10. //  Copyright (c) 2015年 huangzs. All rights r

Swift环境下实现UILabel居上 居中 居下对齐

首先在Xcode中新建.h文件,将下面代码复制进去 // // 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,

Swift环境下一行代码实现UILabel居上 居中 居下对齐

首先在Xcode中新建.h文件,将以下代码复制进去 // // 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,

UIlabel居上对齐遇到的问题和解决方法以及其他相关资料

UILabel的text的对其方式有四种类型 NSTextAlignmentLeft; NSTextAlignmentCenter; NSTextAlignmentRight; 基本够用 但是今天遇到个问题 就是当我label很高字体很小的时候 默认的label文字永远是默认在中间  上图 [myLabel sizeToFit];首先试了这个方法 但是发现改变大小适应这个属性 会让文字在左上角并且label的height也随之缩小 添加numberToLine=0可以在换行的时候改变高度 其实这

iOS设置button上的文字和图片上下垂直/水平居中对齐

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];//button的类型  button.frame = CGRectMake(100, 100,90, 90);//button的frame  button.backgroundColor = [UIColor cyanColor];//button的背

Android实习札记(9)---设置Eclpise为护眼色与代码快速对齐

 Android实习札记(9)---设置Eclpise为护眼色与代码快速对齐 笔者的一些废话:(只是最近心情太差,吐槽下而已~) 感觉好久都没写博客了,看看上一次写博客是11月21号,已经有12天没有写自己的实习札记了, 不是没东西可以,只是最近真的是倒霉透了,一堆麻烦事,根本静不下心来,自己来到公司,第一二 个星期看看文档,写写小demo什么的,还过得去,日子还蛮滋润的,偶尔可以写下博文,但是第三个 星期开始就倒霉透了,因为笔者所在的公司是一间外包公司,可能是他们很久之前接的一个外包吧, 但是

解决statusStrip控件上的项目不能靠右对齐的问题

在c#中用到了状态栏控件StatusStrip,但当我想把StatusStrip上某个StatusLabel靠右对齐时出了问题. 按照MSDN中的办法,是设置ToolStripStatusLabel的Alignment属性为Right.不过我在设计界面的属性窗口中找不到Alignment. 就算加入代码toolStripStatusLabel2.Alignment = ToolStripItemAlignment.Right; 也还是没什么效果. 后来我找到两种方法解决这个问题: 方法一: 在状