博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
固定UILabel宽度分行显示
阅读量:6440 次
发布时间:2019-06-23

本文共 3070 字,大约阅读时间需要 10 分钟。

固定UILabel宽度分行显示

这种小伎俩估计都被用烂了,笔者给大家提供一个category文件,供大家简单设置哦.

各种富文本效果哦(普通文本也是可以用的呢):

3行,固定宽度200

2行,固定宽度200

无限行,固定宽度250

无限行,固定宽度250,设置段落样式

源码:

UILabel+SizeToFit.h  与  UILabel+SizeToFit.m

////  UILabel+SizeToFit.h//  SizeToFit////  Copyright (c) 2014年 Y.X. All rights reserved.//#import 
@interface UILabel (SizeToFit)- (void)fixWidth:(CGFloat)width // 固定宽度 position:(CGPoint)position // 文字起始位置 numberOfLines:(NSInteger)lines // 行数(如果为0则表示为无限行) lineBreakMode:(NSLineBreakMode)mode; // 文字断开方式@end
////  UILabel+SizeToFit.m//  SizeToFit////  Copyright (c) 2014年 Y.X. All rights reserved.//#import "UILabel+SizeToFit.h"@implementation UILabel (SizeToFit)- (void)fixWidth:(CGFloat)width        position:(CGPoint)position   numberOfLines:(NSInteger)lines   lineBreakMode:(NSLineBreakMode)mode{    CGRect newRect     = self.frame;    newRect.size.width = width;    newRect.origin     = position;    self.frame         = newRect;        self.numberOfLines = lines;    self.lineBreakMode = mode;    [self sizeToFit];}@end
使用的源码(注,此处用到了自己写的一些源码,请君自行替换):
////  RootViewController.m//  SizeToFit////  Copyright (c) 2014年 Y.X. All rights reserved.//#import "RootViewController.h"#import "UILabel+SizeToFit.h"#import "FontPool.h"@interface RootViewController ()@end@implementation RootViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];    self.view.backgroundColor = [UIColor blackColor];        // 注册字体    REGISTER_FONT(bundleFont(@"新蒂小丸子体.ttf"), @"新蒂小丸子体");        // 设置段落样式    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];    style.firstLineHeadIndent = 14.f * 2;        // 设置富文本    NSString *testStr = @"如果我有尾巴的话 —— 说起来有点不好意思,只要和你在一起,一定会止不住摇起来的吧。";    NSArray *array \        = @[[ConfigAttributedString font:[UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子体", 0) size:12.f]                                   range:[testStr range]],            [ConfigAttributedString foregroundColor:[UIColor whiteColor]                                              range:[testStr range]],            [ConfigAttributedString paragraphStyle:style                                             range:[testStr range]],            [ConfigAttributedString font:[UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子体", 0) size:14.f]                                   range:[@"如果我有尾巴的话" rangeFrom:testStr]],            [ConfigAttributedString foregroundColor:[UIColor redColor]                                              range:[@"如果我有尾巴的话" rangeFrom:testStr]]];            // 创建label    UILabel *label          = [UILabel new];        // 设置富文本    label.attributedText    = [testStr createAttributedStringAndConfig:array];        // 0行,固定宽度200    [label fixWidth:250           position:CGPointMake(50, 100)      numberOfLines:0      lineBreakMode:NSLineBreakByTruncatingMiddle];        [self.view addSubview:label];}@end

核心代码处:

注意,只有执行了sizeToFit才是解决问题的关键所在:

就是这么简单:)

转载地址:http://qiuwo.baihongyu.com/

你可能感兴趣的文章
商务智能的需求驱动
查看>>
ThinkPad预装win8系统机型安装win7系统的操作指导
查看>>
JS高效关键字搜索---转
查看>>
PowerShell【变量篇】
查看>>
CSVN部署安装,实现web管理svn
查看>>
10-python-字典
查看>>
Codeforce915C
查看>>
2、内核的配置和移植
查看>>
BZOJ2115:[WC2011] Xor(线性基)
查看>>
BZOJ4520:[CQOI2016]K远点对(K-D Tree)
查看>>
Cassandra create a new user
查看>>
npm package
查看>>
elk系列4之kibana图形化操作【转】
查看>>
逆向project实战--Acid burn
查看>>
Renascence架构介绍——文件夹
查看>>
找不到包含 OwinStartupAttribute 的程序集
查看>>
Ubuntu 16.04安装网络流量监控工具Netspeed(附带10款最佳的指示器工具)
查看>>
Apache Solr-6.0.1 (OpenLogic CentOS 7.2)
查看>>
【其他】Windows 系统安装IIS 打开页面出现空白解决方案
查看>>
九个问题从入门到熟悉HTTPS
查看>>