`

constrainedToSize获取字符串的宽高

    博客分类:
  • ios
 
阅读更多

在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法。

1.获取宽度,获取字符串不折行单行显示时所需要的长度

CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];

CGSize titleSize = [aString sizeWithFont:font 
constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; 
 注:如果想得到宽度的话,size的width应该设为MAXFLOAT。

2.获取高度,获取字符串在指定的size内(宽度超过label的宽度则换行)所需的实际高度.

CGSize titleSize = [aString sizeWithFont:font 
                       constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) 
                           lineBreakMode:UILineBreakModeWordWrap]; 
 注:如果想得到高度的话,size的height应该设为MAXFLOAT。

3.实际编程时,有时需要计算一段文字最后一个字符的位置,并在其后添加图片或其他控件(如info图标),下面代码为计算label中最后一个字符后面一位的位置的方法。

CGSize sz = [label.text sizeWithFont:label.font                      
                   constrainedToSize:CGSizeMake(MAXFLOAT, 40)]; 
CGSize linesSz = [label.text sizeWithFont:label.font 
                        constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) 
                            lineBreakMode:UILineBreakModeWordWrap]; 
 
if(sz.width <= linesSz.width) //判断是否折行
{ 
    lastPoint = CGPointMake(label.frame.origin.x + sz.width, label.frame.origin.y); 
} 
else 
{ 
    lastPoint = CGPointMake(label.frame.origin.x + 
             (int)sz.width % (int)linesSz.width,linesSz.height - sz.height); 
}
 
分享到:
评论

相关推荐

    ios实现自动获取label高度、宽度及最后一个位置详解

    一、获取宽度,获取字符串不折行单行显示时所需要的长度 CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; 注:如果想得到宽度的话,size的width应该设为MAXFLOAT。 ...

    UITableViewCell自适应高度

    当cell被重用或创建时,我们需要根据indexPath的row值获取相应的字符串内容,再次使用`sizeWithFont:constrainedToSize:lineBreakMode:`方法计算新的高度,并确保这个高度被应用到cell的高度计算中。这样,无论内容...

    iphong开发的文档

    这里需要修改`constrainedToSize`的宽高参数,以适应高度不变的情况。 2. **将字符串转换为日期时间格式**: - 使用`NSDateFormatter`类,通过设置适当的`dateFormat`,可以将字符串转换为`NSDate`对象。例如,...

    IOSUIKit总结

    2. **计算高度**:获取字符串在指定的宽度内(宽度超过 `UILabel` 的宽度则换行)所需的实际高度。 ```objective-c CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(label.frame....

    实现iPhone电子书的分页显示功能的代码分享.pdf

    - 首先计算整个文本字符串在UILabel的宽度约束下的高度`totalTextSize.height`。 - 如果文本高度小于UILabel的高度,那么可以直接显示所有文本,无需分页。 - 否则,根据理想状态下每页的高度,计算出总页数`...

    UITableView(cell)行高——根据文件内容自动设置

    例如,如果我们有一个`contentLabel`,并且知道要显示的数据字符串`dataString`和`contentLabel`的实际宽度`contentLabelWidth`,我们可以这样做: ```swift let font = UIFont.systemFont(ofSize: 14.0) let ...

    ios7 UIKit 框架文档

    - `-(CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode`: 计算字符串在指定字体和大小限制下的尺寸。 - `-(CGSize)sizeWithFont:(UIFont *)font`:...

    气泡功能的实现

    //让一段字符串 根据换行模式和字体强制的去适应一个大小 CGSize size = [message sizeWithFont:font constrainedToSize:CGSizeMake(180, 1000000) lineBreakMode:NSLineBreakByCharWrapping];

    实现iPhone电子书的分页显示功能的代码借鉴.pdf

    这个过程涉及到寻找文本字符串的临界点,即刚好超出UILabel尺寸的那一点。 ```objc for (NSUInteger location = 0; location ; ) { NSRange range = NSMakeRange(location, referCharatersPerPage); // ... } ```...

    IOS 中UITextField,UITextView,UILabel 根据内容来计算高度

    CGSize size = [value sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping]; return size.height; } ``` 在上面的...

    ios动画简单使用

    // 获取要展示的字符串 NSString *str = [array objectAtIndex:1]; // 计算字符串在label中的尺寸 CGSize strSize = [str sizeWithFont:[UIFont fontWithName:@"Marker Felt" size:50] constrainedToSize:...

    ios动态设置lbl文字标签的高度

    ### 方法一:使用sizeWithFont:constrainedToSize:lineBreakMode: 这种方法适用于iOS 6及更早版本,因为它利用了`sizeWithFont:constrainedToSize:lineBreakMode:`这个API来计算文本的尺寸。首先设置UILabel的字体...

    iOS 适配demo

    constrainedToSize:CGSizeMake(270.0, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping]; _headerL.frame = CGRectMake(_headerL.frame.origin.x, _headerL.frame.origin.y, _headerL.frame.size.width...

    笔记整理iOS.docx

    `UILabel`用于显示书名,通过`sizeWithFont:constrainedToSize:`方法动态计算文字的高度,确保文字能完整显示,同时设置`lineBreakMode`为`NSLineBreakByWordWrapping`允许换行,并设置`numberOfLines`为0,允许多行...

    iOS文字绘制(继承UIControl简单封装类似UILabel的控件)

    CGSize textSize = [self.text sizeWithFont:font constrainedToSize:maxSize lineBreakMode:NSLineBreakByWordWrapping]; // 绘制文本 CGRect textRect = CGRectMake((self.bounds.size.width - textSize....

    IOS 仿Android吐司提示框的实例(分享)

    此外,还需要了解`NSString`的`sizeWithFont:constrainedToSize:`方法,该方法用于计算文本在给定尺寸限制下的大小,这对于适应不同长度的消息至关重要。 总之,这个实例展示了如何在iOS应用中自定义组件以模仿...

Global site tag (gtag.js) - Google Analytics