【转】UILabel、UITextView自适应得到高度

原文:http://blog.csdn.net/xcysuccess3/article/details/8331549

在iOS中,经常遇到需要根据字符串的内容动态指定UILabel,UITextView,UITableViewCell等的高度的情况,这个时候就需要动态的计算字符串内容的高度,下面是计算的方法:

[cpp] view plaincopy

  1. /**
  2. @method 获取指定宽度情况ixa,字符串value的高度
  3. @param value 待计算的字符串
  4. @param fontSize 字体的大小
  5. @param andWidth 限制字符串显示区域的宽度
  6. @result float 返回的高度
  7. */ floatfloatfloat
  8. return

前不久QA报了个文字显示不全的bug,我看了下代码,发现是计算高度出了问题。之前的同事在UITableViewCell中使用了UITextView,但是计算高度时使用了和UILabel相同的的方法。

其实UITextView在上下左右分别有一个8px的padding,当使用[NSString
sizeWithFont:constrainedToSize:lineBreakMode:]时,需要将
UITextView.contentSize.width减去16像素(左右的padding 2 x
8px)。同时返回的高度中再加上16像素(上下的padding),这样得到的才是UITextView真正适应内容的高度。

示例代码如下:

[html] view plaincopy

  1. + (float) heightForTextView: (UITextView *)textView WithText: (NSString *) strText{
  2. float fPadding = 16.0; // 8.0px x 2
  3. CGSize constraint = CGSizeMake(textView.contentSize.width - fPadding, CGFLOAT_MAX);
  4. CGSize size = [strText sizeWithFont: textView.font constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
  5. float fHeight = size.height + 16.0;
  6. return fHeight;
  7. }
时间: 2024-10-19 16:18:50

【转】UILabel、UITextView自适应得到高度的相关文章

IOS7.0 UILabel实现自适应高度的新方法

//IOS7.0中利用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context 方法可以获取label的Size大小,来自适应高度,取代了之前的- (CGSize)sizeWithFont:(UIFont *)font const

iOS开发-使用storyboard实现UILabel的自适应高度(iOS8)

好久没有写博客了,以后多写些博客,对自己是一种提升,对大家也是一种帮助 最近特别痴迷storyboard和xib的可视化编程,在写项目的时候遇到个问题就是如何使UILabel自适应高度,查了好多文章博客,没有太好的办法,我就自己手动搞了搞,实现了自己想要的效果,下面分享出来 相信大家都遇到这种情况,label没有根据text的字数来自适应高度 那么如何使UILabel自适应高度呢? 在可视化编程下我们需要这么做 1.不可以将label的高度设成固定值,因为设成固定值,label的大小就确定了,在

UILabel实现自适应宽高需要注意的地方(三)

一.需求图如下所示 UILabel 的高度自适应 UILabel中的段落间距可设置 图片效果如下: 调整段落适应长宽高方式: 需求: 保证"游戏玩法" 章节,UILabel高度自适应,行内距为4px 做法: UILabel实现自适应宽高(一)中说明了 UILabel 自适应的方法,但是如果加行间距,就要用到  NSMutableAttributedString  富文本的方式实现,来判断行内距然后再通过 sizetofit 进行高度自适应. 自适应方法如下: Coding: - (vo

iOS开发 UILabel实现自适应高宽

UILabel是iOS开发常用的控件.UILabel的属性需要了解,UILabel的特殊显示效果也需要我们掌握.UILabel自适应高宽度是很多初学者遇到的技术性难题.比如段文字,要让他完全地分行显示且要让后面的控件不被遮挡.这需要我们的UILabel能够自适应高宽,以便完全显示text的内容,后面的控件可以获取UILabel的起始坐标和宽高来重新设置frame来达到紧贴着UILabel显示而不被遮挡. 工具/原料 Mac OS X操作系统::OS X 10.11.5 编译环境:Xcode 7.

iOS-限制UILabel宽度自适应的最大宽度

前言 一个需求,要求UILabel宽度自适应到指定宽的时候然后限制其宽度,不再需要宽度自适应 , 并且需要UILabel后面的控件紧跟其后,如下图 好的.直接进入正题 UIlabel有一个属性叫preferredMaxLayoutWidth,官方解释是: // Support for constraint-based layout (auto layout) // If nonzero, this is used when determining -intrinsicContentSize fo

计算UITextView的滑动高度

1 - (CGFloat)getHeightByTextView:(UITextView *)myTextView withContent:(NSString *)content withFontSize:(CGFloat)size withTextColor:(UIColor *)color 2 { 3 CGFloat newSizeH = 0.; 4 //UITextView的实际高度 5 if ([[[UIDevice currentDevice] systemVersion] float

jquery实现div自适应浏览器高度

<!DOCTYPE html><html><head><meta charset=UTF-8 /><title>jquery实现div自适应浏览器高度(宽度)</title><meta name="keywords" content="html5" /><meta name="description" content="html5 test&quo

IOS UILabel的自适应

1  //创建label UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)]; 2  //文本 NSString *string = @"11111111122222222233333333"; UIFont *font = [UIFont fontWithName:@"Arial" size:12]; 3  //设置自动行数与字符换行(文本多行显示) (1)  label.lin

UITableViewCell自适应内容高度

UITableViewCell自适应内容高度 (2015-06-25 16:02:31) 其实TableViewCell自适应高度也就是Cell中的label自适应高度,网上有好多label自适应高度的方法,可以百度. 除了上面说的,还有一种比较简单的,其实原理估计都是一样的,只是个人觉得这种更好些而已. 首先我们知道返回cell自适应高度,那么这个高度怎么来,肯定是TableViewDelegate的方法- (CGFloat)tableView:(UITableView *)tableView