在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,博主参考国外网站,从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐。具体如下:

[cpp] view plain copy
  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 plain copy
  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 plain copy
  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];

iOS UILabel设置居上对齐,居中对齐,居下对齐相关推荐

  1. 自定义UI控件:继承UIlabel,使label中的文字居上,居中,居下

    一般来说,在ios里面label中的文字垂直方向上是默认居中的,如果想要设置居上或者居下,在xib文件里面不能设置,只能自定义一个UI控件. label文字的水平位置,可以在xib文件中直接设置. i ...

  2. iOS UILabel设置行间距和字间距并计算高度

    转载自:  http://blog.csdn.net/luco2008/article/details/50977718 #define UILABEL_LINE_SPACE 6 #define HE ...

  3. iOS UILabel 设置 行间距 和 字间距 并计算高度

    #define UILABEL_LINE_SPACE 6 #define HEIGHT [ [ UIScreen mainScreen ] bounds ].size.height //给UILabe ...

  4. flex vue 垂直居中居上_flex 垂直居中、两列对齐、自适应宽

    flex 垂直居中 #parent { display:flex; width:300px; height:300px; outline:solid 1px; justify-content:cent ...

  5. 配置字段(居左,居中,居右,高度自适应)

    1.....var note = items.NOTE();2.... // 创建 主体时,需要的key_thisKey.push({ key: childName, w: childWidth, c ...

  6. 【微信小程序】实现新闻列表(文字垂直居上、垂直居下)

    新闻列表效果 相关原理 CSS 的 absolute 定位 值得注意的是,绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>: 代码 ...

  7. UILable属性详解,设置居上对齐,居中对齐,居下对齐,获取斜体字,字体、大小、单位、颜色

    ·常用属性和方法有: 1.创建 CGRect rect = CGRectMake(100, 200, 50, 50); UILabel *label = [[UILabel alloc] initWi ...

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

    首先在Xcode中新建.h文件,将以下代码复制进去 // // myUILabel.h // // // Created by yexiaozi_007 on 3/4/13. // Copyright ...

  9. PyQt5 技术篇-设置alignment对齐方式。Qt Designer设置文本对齐方式。居中、左对齐、右对齐、上对齐、下对齐。

    通过 alignment 设置,展开后可以设置水平方向或垂直方向的对齐方式. PyQt5 设置文本对齐方法: self.label.setAlignment(QtCore.Qt.AlignRight| ...

最新文章

  1. 李战:悟透JavaScript 【转】
  2. 关于若干数据库数据插入性能的对比
  3. SQL注入——基于报错的注入(五)
  4. tomcat 启动时内存溢出
  5. 使用Spring发送带附件的电子邮件(站内和站外传送)
  6. 百度分布式配置管理平台-Disconf
  7. lg gw880 qq2011 android beta4版,LG GW880评测:CMMB天线、细节设计
  8. 最新容器项目 Kata 曝光
  9. Insufficient space for shared memory file 解决办法
  10. 用cglib生成的代理类取不到注解的问题
  11. Redis 入门指南三:数据类型
  12. 一步解决Bat脚本中包含中文时运行乱码问题
  13. linux三星电脑开机怎么进入页面,三星Samsung笔记本电脑开机进入BIOS的方法与BIOS设置全功能菜单(F2)...
  14. 渗透测试——痕迹清除
  15. 【青松资讯】Anonymous匿名者黑客组织公布攻击新目标:100家中国政府网站
  16. 自监督学习系列(一):基于 Pretext Task
  17. 解决visio和office365冲突,无法安装visio问题
  18. Android多维商品属性SKU选择
  19. 刘强东终于向自己的兄弟下手了!
  20. make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1

热门文章

  1. [羊城杯 2020]easyre 1题解
  2. 【java算法题大全】设计一个抽奖程序,要求已经抽过的不能再抽,可以自定义参加抽奖人数以及奖品
  3. 碳纳米纤维膜;多孔碳纳米纤维柔性膜
  4. 在 CSS 中设置 cellpadding 和 cellspacing?
  5. X 态及基于 VCS 的 X-Propagation 检测
  6. PlayBlock何晓星:区块链不是换了个地方玩原来的游戏,而是带来新的可能性
  7. nginx - 负载均衡配置-负载均衡策略
  8. JAVA SpringBoot连接Access数据详细教程(带密码)
  9. 在 Ubuntu 18.04 构建 Intelligent Input Bus (IBus)
  10. 分数的大小比较优秀教案_《分数的大小比较》教学教案范文