IOS ——UI篇—— 自适应UILable高度 或宽 的设置

我们在使用UILable时,在初始化的时候往往都是设置的固定的宽和高,在显示不同长度的文本时达不到我们想要的视觉效果,或者是不能显示完稍长的文本内容,满足不了我们的需求,

我们可以根据文本的长度自动调节lable的高 或 宽

//初始化时设置的size可以随便(此时的size会根据文本的多少自动调节)

_titleLable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, WIDTH, 100)];

_titleLable.textAlignment = NSTextAlignmentCenter;

_titleLable.numberOfLines = 0;//此时行数必须设置(不设置行数当文本内容过多时,会只在lable的中央显示一行内容其余内容不会显示);

UIFont * tfont = [UIFont systemFontOfSize:24];

_titleLable.font = tfont;

_titleLable.lineBreakMode =NSLineBreakByTruncatingTail ;

_titleLable.text = @"我们在使用UILable时,在初始化的时候往往都是设置的固定的宽和高,在显示不同长度的文本时达不到我们想要的视觉效果,或者是不能显示完稍长的文本内容,满足不了我们的需求" ;

[_titleLable setBackgroundColor:[UIColor redColor]];

//高度估计文本大概要显示几行,宽度根据需求自己定义。 MAXFLOAT 可以算出具体要多高

CGSize titleSize =CGSizeMake(WIDTH,60);

// label可设置的最大高度和宽度

//    CGSize size = CGSizeMake(300.f, MAXFLOAT);

//    获取当前文本的属性

NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:tfont,NSFontAttributeName,nil];

//ios7方法,获取文本需要的size,限制宽度

CGSize  actualTitleSize =[_message.newsName boundingRectWithSize:titleSize options:NSStringDrawingUsesLineFragmentOrigin  attributes:tdic context:nil].size;

//此时设置的frame起到关键的作用 ,在此根据需要也可以用  actualTitleSize.width  自动调节lable的宽

_titleLable.frame =CGRectMake(10,10, 375 - 20, actualTitleSize.height);

[self.view addSubview:_titleLable];

这样就能达到自动调节lable的高 或 宽 的目的了,如果你有更好

时间: 2024-10-23 02:53:08

IOS ——UI篇—— 自适应UILable高度 或宽 的设置的相关文章

IOS UI篇—UILabel的文字顶部对齐

UILabel的文字顶部对齐 NOV 20TH, 2011 默认UILabel是垂直居中对齐的,如果你的UILabel高度有多行,当内容少的时候,会自动垂直居中. 如下图所示(图片来自stackoverflow): 比较郁闷的是,UILabel并不提供设置其垂直对齐方式的选项.所以如果你想让你的文字顶部对齐,那么就需要自己想办法了. stackoverflow.com 上提供了几种方法来达到顶部对齐的效果. 方法一 在显示文字时,首先计算显示当前的文字需要多宽和多高,然后将对应的UILabel的

完美方案——iOS的WebView自适应内容高度

/////////////////////////////初始化,self.view是父控件///////////////////////////////// _webView = [[UIWebView alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 0)]; _webView.delegate = self; _webView.scrollView.bounces = NO; _webView.scroll

IOS ——UI篇—— UISegmentedControl的用法总结

1 //第一种创建方式 2 UISegmentedControl *seg = [[UISegmentedControl alloc]initWithItems:@[@"1",@"2",@"3"]]; 3 seg.frame = CGRectMake(40, 100, 60, 20); 4 5 [seg insertSegmentWithImage:[UIImage imageNamed:@"图片名"] atIndex:4 a

iOS UILable高度自适应

适用于iOS6以后 NSString *tip = @"UILable高度自适应,UILable高度自适应,UILable高度自适应"; UILabel label_2 = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, 200, 30)]; label_2.font = [UIFont systemFontOfSize:15]; label_2.lineBreakMode = NSLineBreakByCharWrapping;

ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局 一.实现效果 二.使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作)

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作) 一.简单说明 使用数据刷新框架: 该框架提供了两种刷新的方法,一个是使用block回调(存在循环引用问题,_ _weak),一个是使用调用. 问题:在进行下拉刷新之前,应该要清空之前的所有数据(在刷新数据这个方法中). 移除正在显示的cell: (1)把字典中的所有的值,都从屏幕上移除 (2)清除字典中的所有元素 (3)清除cell的frame,每个位置的cell的frame都要重新计算 (4)清除可复用的缓存池. 该部分的代码如下: 1

IOS开发UI篇--UITableView的自定义布局==纯代码布局

UITableView中除了利用系统的UItableViewCell不能完成需求进行布局时,还可以进行自定义布局: 自定义布局分为两类:(1)利用代码进行创建 (2)利用xib进行实现: 下面对利用代码进行创建分析: 应用场景:像微博,等列表数据展示(由于微博的每个单元格的数据大小不一致,所以得计算每个单元格的大小) 分析:前提是获取列表数据,然后建立每个单元格的模型(建立单元格模型应继承UITableViewCell)复写 - (id)initWithStyle:(UITableViewCel

iOS开发UI篇—自定义瀑布流控件(蘑菇街实现)

iOS开发UI篇—自定义瀑布流控件(蘑菇街瀑布流) 一.简单说明 关于瀑布流 1.是使用UIScrollView实现的 2.刷新数据(reloadData)方法里面做哪些事情 3.layoutSubviews方法里面做哪些事情 4.模仿UItableView进行设计 完善: 瀑布流控件第一次显示到屏幕上的时候自动的向数据源索要数据,而不需要手动调用.这需要监听View的显示,View的显示有一个方法,叫做willMoveToSuperview:在该方法中直接刷新一次数据即可. 二.把自定义的瀑布

iOS开发UI篇—自定义瀑布流控件(接口设计)

iOS开发UI篇—自定义瀑布流控件(接口设计) 一.简单说明 1.关于瀑布流 电商应用要展示商品信息通常是通过瀑布流的方式,因为每个商品的展示图片,长度和商都都不太一样. 如果不用瀑布流的话,展示这样的格子数据,还有一种办法是使用九宫格. 但利用九宫格有一个缺点,那就是每个格子的宽高是一样的,如果一定要使用九宫格来展示,那么展示的商品图片可能会变形. 为了保证商品图片能够按照原来的宽高比进行展示,一般采用的是瀑布流的方式. 2.瀑布流的特点: 由很多的格子组成,但是每个格子的宽度和高速都是不确定