关闭

iOS UILabel 文字 置顶/置底 实现

标签: iosapiuilabel控件需求
2230人阅读 评论(2) 收藏 举报
分类:

iOS UILabel控件默认文字位置是居中的,如图所示:

这里写图片描述

但是我们经常碰到这样的需求,希望文字向上置顶,或者向下置底,但是很遗憾,iOS API中并没有提供相应的属性和方法,需要我们手动设置。

利用 分类(category)为UILabel添加属性 isTop 和 isBottom来控制文字是否置顶和置底。

实现:利用往文字后面活前面下面添加”\n”来实现文字填充满整个UILable控件实现置顶/置顶效果

.h文件

#import <UIKit/UIKit.h>

@interface UILabel (TextAlign)

@property (nonatomic, assign) BOOL isTop;
@property (nonatomic, assign) BOOL isBottom;

@end

.m文件

#import "UILabel+TextAlign.h"

@implementation UILabel (TextAlign)

-(void)setIsTop:(BOOL)isTop {

    if (isTop) {

        CGSize fontSize = [self.text sizeWithFont:self.font];
        //控件的高度除以一行文字的高度
        int num = self.frame.size.height/fontSize.height;
        //计算需要添加换行符个数
        int newLinesToPad = num  - self.numberOfLines;
        self.numberOfLines = 0;
        for(int i=0; i<newLinesToPad; i++)
            //在文字后面添加换行符"/n"
            self.text = [self.text stringByAppendingString:@"\n"];
    }
}

-(void)setIsBottom:(BOOL)isBottom {

    if (isBottom) {
        CGSize fontSize = [self.text sizeWithFont:self.font];
        //控件的高度除以一行文字的高度
        int num = self.frame.size.height/fontSize.height;
        //计算需要添加换行符个数
        int newLinesToPad = num  - self.numberOfLines;
        self.numberOfLines = 0;
        for(int i=0; i<newLinesToPad; i++)
            //在文字前面添加换行符"/n"
            self.text = [NSString stringWithFormat:@" \n%@",self.text];
    }
}

@end

使用方法:
导入头文件

#import "UILabel+TextAlign.h"

然后设置属性


//置顶
self.lb.isTop = YES;

//置底
self.lb.isBottom = YES;

此时效果:

2
0
查看评论

IOS_Vertically align UILabel文本置顶

There's no way to set the vertical align on a UILabel, but you can get the same effect by changing the label's frame. I've made my l...
  • u011220580
  • u011220580
  • 2013-07-03 17:21
  • 4092

UILabel垂直居中内容置顶[转自stack overflow]

1、 [myLabel sizeToFit]; 2、 myLabel.numberOfLines = 0; [myLabel sizeToFit]; - (void)viewDidLoad{ [super viewDidLoad]; ...
  • Liar0606
  • Liar0606
  • 2014-12-30 14:37
  • 2824

iOS开发技巧 - 使UILabel中的文字吸顶(顶部对齐)

需求使用过UILabel,会发现UILabel可以设置三种对齐方式,靠左,居中,靠右。满心欢喜地以为原来就这么回事,苹果都帮我们做好了呀。可是,接到一个需求是使文字在cell的子控件UILabel中文字吸顶,这个时候,找了半天都没有这样的属性..设置了UILabel的高度>=60,Lines=...
  • u013316626
  • u013316626
  • 2017-05-01 19:08
  • 4245

JQuery实现置顶、置底、向上、向下、取消排序功能

sort.html 序号 内容 排序 1 内容一 置顶 href="javascript:void(0)" class="upbtn">上 href="javascript:void(0)"...
  • aaalk1001
  • aaalk1001
  • 2016-12-20 17:05
  • 2384

UILabel设置顶、左、右、底部对齐

1、主要用到了两个方法和一个工具类ZWMaker: -(CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines; -(void)drawTextInRect:(CGRect)req...
  • zww1984774346
  • zww1984774346
  • 2016-06-15 16:57
  • 3260

[iOS]UILable文字如何在顶部

让UILabel的文字顶部对齐 NOV 20TH, 2011 xcode中默认的UILabel是垂直居中对齐的,如果你的UILabel高度有多行,当内容少的时候,会自动垂直居中。 如下图所示(图片来自stackoverflow): 比较郁闷的是,UILabel并不...
  • s133315202
  • s133315202
  • 2015-07-29 21:48
  • 1657

控制标签上移、下移、置顶、置底

Examples .demo li{line-height: 30px;border-bottom: 1px solid #000;} .demo li a{padding: 0 20px;} 001 上移下移置顶置底 002 上移下移置顶置底 003 上移下移置顶置底 ...
  • bulongwind
  • bulongwind
  • 2016-04-22 09:26
  • 245

iOS三种让UILabel中的text居上的方式

第一种: CGRect frame = yourLabel.frame;     CGSize size = [yourLabel.text sizeWithFont:yourLabel.font constrainedToSize:CGSizeMake(frame.s...
  • HDFQQ188816190
  • HDFQQ188816190
  • 2016-02-04 14:33
  • 4711

iOS 中怎么设置label中的内容是靠最上面显示,,还是在中间显示

#import typedef enum {     VerticalAlignmentTop = 0, // default     VerticalAlignmentMiddle,     ...
  • dkq972958298
  • dkq972958298
  • 2017-03-20 14:09
  • 1854

纯UILabel实现文字的竖排显示 记录

做iOS开发要经常用到UILabel。UILabel一般只适用一些简单的文字显示。当需要复杂的图文混排的时候,可以用CoreText来做。但是CoreText用法复杂,当我们遇到一些不是很复杂的交互需求时,用CoreText就有点杀鸡用牛刀的意思。这里介绍一下我在项目里遇到的一个案例。 先来看看效...
  • a287971
  • a287971
  • 2015-08-18 00:18
  • 2015
    个人资料
    • 访问:84959次
    • 积分:1229
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:3篇
    • 译文:0篇
    • 评论:17条
    博客专栏
    最新评论