资讯专栏INFORMATION COLUMN

iOS UIlabel高度自适应总结。UITextView根据内容自动改变frame。

loostudy / 1388人阅读

摘要:需要把显示行数设置成无限制定义成方法方便多个调用增加代码的复用性限制最大的宽度和高度采用换行模式传人的字体字典方法二获取某固定文本的显示高度根据字符串的的长度来计算的高度根据内容自动改变闪动滚动条允许滚动不允许滚动,当的大小足以容纳它的

-(void)initUserInterface

{
    UILabel *label = [[UILabel alloc]init];
    label.numberOfLines = 0; // 需要把显示行数设置成无限制
    label.font = [UIFont systemFontOfSize:15];
    label.textAlignment = NSTextAlignmentCenter;
    label.text = @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    CGSize size =  [self sizeWithString:label.text font:label.font];
    label.bounds = CGRectMake(0, 0, size.width, size.height);
    label.center = self.view.center;
    [self.view addSubview:label];
     
}

// 定义成方法方便多个label调用 增加代码的复用性

-(CGSize)sizeWithString:(NSString *)string font:(UIFont *)font

{
    CGRect rect = [string boundingRectWithSize:CGSizeMake(320, 8000)//限制最大的宽度和高度
                                       options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesFontLeading  |NSStringDrawingUsesLineFragmentOrigin//采用换行模式
                                    attributes:@{NSFontAttributeName: font}//传人的字体字典
                                       context:nil];
     
    return rect.size;
}

方法二:

 CGRect contentRect = [NSString heightForString:badgeValue Size:contentSize Font:kValueFont];


//获取某固定文本的显示高度
+(CGRect)heightForString:(NSString*)str Size:(CGSize)size Font:(UIFont*)font
{
    return [NSString heightForString:str Size:size Font:font Lines:0];
}

+(CGRect)heightForString:(NSString*)str Size:(CGSize)size Font:(UIFont*)font Lines:(NSInteger)lines
{
    if (StringIsNullOrEmpty(str)) {
        return CGRectMake(0, 0, 0, 0);
    }
    static UILabel *lbtext;
    if (lbtext==nil) {
        lbtext    = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
    }else{
        lbtext.frame=CGRectMake(0, 0, size.width, size.height);
    }
    lbtext.font=font;
    lbtext.text=str;
    lbtext.numberOfLines=lines;
    CGRect rect= [lbtext textRectForBounds:lbtext.frame limitedToNumberOfLines:lines];
    if(rect.size.height<0)
        rect.size.height=0;
    if (rect.size.width<0) {
        rect.size.width=0;
    }
    return rect;
}

/**

@return 根据字符串的的长度来计算UITextView的高度
*/

+(float)heightForString:(NSString *)value fontSize:(float)fontSize andWidth:(float)width
{

   float height = [[NSString stringWithFormat:@"%@
",value] boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:fontSize],NSFontAttributeName, nil] context:nil].size.height;
   
   return height;

}

/**

UITextView根据内容自动改变frame
*/

(void)textViewDidChange:(UITextView *)textView
{

[textView flashScrollIndicators];   // 闪动滚动条
static CGFloat maxHeight = 130.0f;
CGRect frame = textView.frame;
CGSize constraintSize = CGSizeMake(frame.size.width, MAXFLOAT);
CGSize size = [textView sizeThatFits:constraintSize];
if (size.height >= maxHeight)
{
    size.height = maxHeight;
    textView.scrollEnabled = YES;   // 允许滚动
}
else
{
    textView.scrollEnabled = NO;    // 不允许滚动,当textview的大小足以容纳它的text的时候,需要设置scrollEnabed为NO,否则会出现光标乱滚动的情况
}
textView.frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, size.height);

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/15809.html

相关文章

  • iOS 和 Mac OS X 的字符串渲染

    摘要:之后我们将讨论一下对于字符串的渲染,和系统中有哪些相似和不同。注意,这个属性仅在单行的即属性值为时中生效。在中显示动态可能和所有人都打过交道的字符串绘制方法就是最常见的可变高度的。 如何将字符串绘制到屏幕上 为了简单起见,我们先看看UIKit在字符串渲染方面为我们提供了哪些控件。之后我们将讨论一下对于字符串的渲染, iOS 和 OS X 系统中有哪些相似和不同。 UIKit 提供了...

    stackvoid 评论0 收藏0
  • ·UILable属性详解,设置居上对齐,居中对齐,居下对齐,获取斜体字,字体、大小、单位、颜色

    摘要:设置最小收缩字号,如果宽度小于文字长度时,文字字号减小,低于设定字号后,不再减小。中间的内容以方式省略,显示头尾的文字内容。设置字体大小适应宽度设置标签属性文本。,默认,文本最上端与中线对齐。 ·常用属性和方法有: 1、创建 CGRect rect = CGRectMake(100, 200, 50, 50); UILabel *label = [[UILabel alloc] ini...

    SexySix 评论0 收藏0
  • 慕课网_《iOS基础教程之界面初体验》学习总结

    摘要:年月日星期一说明本文部分内容均来自慕课网。它富有交互性及趣味性并且你网提供了丰富的移动端开发开发前端教程以及视频教程等课程资源。 2017年05月15日星期一说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccodere/s... 第一章:大V有话说 1-1 各种叨唠 什么是MVC ...

    RayKr 评论0 收藏0
  • iOS开发③UIView

    摘要:用到的文本框的地方很多,比如搜索框用户登录框等。实现年活动指示器出于非活动状态时则会隐藏停止旋转开始旋转示例图步进器的作用是按照约定的步长进行增减操作。表示最小值,表示最大值,表示初始化时的值,表示步长。 UILabel Lable的作用是显示不可编辑的文字。 属性检查器 Text:Label显示的文字 Color:文字的颜色 Font:字体和字号 Alignment:文本的对齐方式...

    luck 评论0 收藏0
  • IOS状态栏和导航栏的控制问题

    摘要:原文状态栏和导航栏的控制问题的项目多数会遇到控制状态栏和导航栏的问题,比如隐藏状态栏控制状态栏的文字颜色等,导航栏也有同样需求。 原文:IOS状态栏和导航栏的控制问题 IOS的项目多数会遇到控制状态栏和导航栏的问题,比如隐藏状态栏、控制状态栏的文字颜色等,导航栏也有同样需求。本文总结一下操作方法。 首先一点,IOS的界面分为状态栏和导航栏,状态栏是指显示电池、时间的最顶部的一个窄条,高...

    PrototypeZ 评论0 收藏0

发表评论

0条评论

loostudy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<