首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法以编程方式设置UILabel/UITextView的高度

无法以编程方式设置UILabel/UITextView的高度是因为它们是根据其内容自动调整高度的。这意味着它们的高度会根据文本的长度和字体大小自动调整。

对于UILabel,可以使用以下方法来实现自动调整高度:

  1. 设置UILabel的numberOfLines属性为0,表示可以显示多行文本。
  2. 设置UILabel的lineBreakMode属性为NSLineBreakByWordWrapping,表示以单词为单位换行。
  3. 使用NSString的boundingRectWithSize:options:attributes:context:方法计算文本的大小,并根据计算结果设置UILabel的frame。

示例代码如下:

代码语言:swift
复制
let label = UILabel()
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.text = "Your text here"

let maxSize = CGSize(width: label.frame.width, height: CGFloat.greatestFiniteMagnitude)
let textRect = label.text?.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: label.font], context: nil)

label.frame = CGRect(origin: label.frame.origin, size: CGSize(width: label.frame.width, height: textRect?.size.height ?? 0))

对于UITextView,可以使用以下方法来实现自动调整高度:

  1. 设置UITextView的isScrollEnabled属性为false,表示禁止滚动。
  2. 使用UITextView的sizeThatFits方法计算文本的大小,并根据计算结果设置UITextView的frame。

示例代码如下:

代码语言:swift
复制
let textView = UITextView()
textView.isScrollEnabled = false
textView.text = "Your text here"

let newSize = textView.sizeThatFits(CGSize(width: textView.frame.width, height: CGFloat.greatestFiniteMagnitude))
textView.frame = CGRect(origin: textView.frame.origin, size: newSize)

这样,UILabel和UITextView就会根据其内容自动调整高度,以适应文本的长度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS开发中利用runtime设置UITextView默认文字

    ,但不知道大家知不知道UITextView也有一个类似的属性是可以用来设置默认文字(反正在今天之前我是不知道)。...之前在项目中也遇到过设置UITextView默认文字功能,当初做法是在UITextView上添加一个UILabel,让UILabel来显示UITextView默认文字。...今天在看别人博客时候发现了UITextField有一个placeholderLabel属性,这个属性是UITextView私有属性,我们可以通过runtime访问该属性。...我们可以通过创建一个UILabel,然后利用KVC将UITextViewplaceholderLabel替换成我们自己创建UILabel来达到设置UITextView默认文字功能。...默认文字要求不是很苛刻的话,这样就可以快速设置UITextView默认文字,可以提高我们开发效率。

    61920

    iOS文本布局探讨之三——使用TextKit框架进行富文本布局

    二、原生UILabel真的只能渲染文字么?         CoreText是一个比较底层且十分强大文本渲染框架,但是其使用起来并不是十分方便。在较低版本iOS系统中,要进行富文本排版十分困难。...在iOS6中,系统为UILabelUITextView等这类文本渲染控件引入了NSAttributedString属性,有了NSAttributedString这个类,创建灵活多彩文本控件变得十分轻松...一个简单图文混排为例: - (void)viewDidLoad { [super viewDidLoad]; //进行NSTextAttachment创建 NSTextAttachment...三、为富文本附件添加用户交互能力         TextKit框架强大到只使用UILabel就可以完成复杂富文本布局,但是UILabel有一个致命缺陷,其无法进行用户交互。...11, 7_0); //设置附件携带文件目录 需要注意 如果设置了这个属性 image和data将无效 @property(nullable, strong, NS_NONATOMIC_IOSONLY

    2.1K20

    富文本AttributedString总结

    在使用中通过将AttributedString赋值给控件 attributedText 属性来添加文字样式。 可设置控件有UILabel、UITextField和UITextView。...设置下划线颜色 NSUnderlineColorAttributeName,对象为 UIColor。使用方式同删除线一样。...:label]; OC使用之超链接 之所以把 NSLinkAttributeName 属性单独列出来,是因为在 UILabel 和 UITextField 中是无法使用该属性。...更准确点说是在UILabel 和 UITextField 中无法实现点击链接启动浏览器打开一个URL地址,因为在此过程中用到了一个代理函数。只能用在 UITextView 中。...在模拟器环境下一直无法点击,在真机上是正常,不知道是不是模拟器不支持。 OC代码 原文地址

    3.4K20

    iOS文本布局探讨之一——文本布局框架TextKit浅析

    iOS文本布局探讨之一——文本布局框架TextKit浅析 一、引言         在iOS开发中,处理文本视图控件主要有4中,UILabel,UITextField,UITextView和UIWebView...其中UILabel与UITextField相对简单,UITextView是功能完备文本布局展示类,通过它可以进行复杂富文本布局,UIWebView主要用来加载网页或者pdf文件,其可以进行HTML,...TextKit实际上是基于CoreText一个上层框架,其是面向对象,如果TextKit中提供API无法满足需求,可以使用CoreText中API进行更底层开发。        ...Container高度是否自适应TextView高度 @property(NS_NONATOMIC_IOSONLY) BOOL heightTracksTextView; 上面所列举方法中,exclusionPaths...NSLayoutManager与NSTextContainer关系为一对多,放入NSLayoutManager中NSTextContainer会有序数组形式进行管理,在内容布局时,超出第一个NSTextContainer

    1.8K10

    MyLayout&TangramKit 重大升级!

    AutoLayout尺寸自适应 AutoLayout中有两种类型尺寸自适应:一类是以UILabelUITextView为代表视图尺寸自适应,这类视图中宽度和高度有时候需要根据自身内容来确定自己宽度和高度...很明显UIView类返回值是默认值,而UILabelUITextView这些类则重载了这个方法并返回了根据自身内容计算出来尺寸。...当一个视图有自己固有内容尺寸时,就不需要再为视图设置宽度或者高度约束。这也就是为什么一般情况下不对UILabel视图设置宽度和高度约束时系统也能正常完成布局。...要实现UIScrollView滚动时,只需要在一个滚动视图内添加一个布局视图,然后将所有其他子视图都添加到这个布局视图中去,这个和上面的AutoLayout处理方式是一样,最后将布局视图尺寸自适应属性设置为...因此如果想使用布局视图尺寸自适应功能,那么在将布局视图尺寸设置为wrap后,就可以像使用UILabel那样不用去设置布局视图宽度约束和高度约束了。比如有两个兄弟视图A,B。

    2.1K20

    iOS---设置控件内容模式

    容易混淆内容摆放属性: 1. textAligment : 文字水平方向对齐方式 取值 NSTextAlignmentLeft = 0, // 左对齐 NSTextAlignmentCenter...= 1, // 居中对齐 NSTextAlignmentRight = 2, // 右对齐 哪些控件有这个属性 :一般能够显示文字控件都有这个属性 UITextField UILabel UITextView...2. contentVerticalAlignment : 内容垂直方向对齐方式 取值 UIControlContentVerticalAlignmentCenter = 0, // 居中对齐...尺寸范围) UIViewContentModeScaleAspectFit, // 按照图片原来宽高比进行伸缩, 伸缩至 图片宽度和UIImageView宽度一样 或者 图片高度和UIImageView...高度一样 UIViewContentModeScaleAspectFill, // 后面的所有情况, 都会按照图片原来尺寸显示, 不会进行拉伸 UIViewContentModeRedraw,

    917120

    iOS界面布局之三——纯代码autoLayout及布局动画

    除了使用storyBoard进行布局约束拖拽,有时我们也需要在代码中进行autolayout布局设置,Masonry库可以方便创建约束属性,实际上,我们也没有必要再使用系统原生代码来创建和设置约束...通过这个对象,我们可以设置类似视图对象之间间距,约束宽高,比例等属性。...100*100,位置放在屏幕中央,我们可以使用如下约束代码: UILabel * label = [[UILabel alloc]init];     label.numberOfLines = 0...可以发现,一个如此简单约束方式,我们用这样代码要写这么一大坨,麻烦而且不直观。于是,apple又提供给我们下面一种方式。...,textView高度可以自适应文字行数了。

    2.9K30

    【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

    高亮状态; -- UIControlStateDisabled : 禁用状态; -- UIControlStateSelected : 被选中状态; (3) Tittle 属性 Tittle 属性 : 设置不同文本方式...用户登录界面示例 (1) 用户名 UI 设置 用户名设置 :  -- 设置 UILabel : 设置 Text 属性值为 "用户名 : "; -- 设置 Text Field 输入框 : Placeholder...UIScrollView 显示区域属性 :  -- contentSize : 属性是一个 CGSize 类型值, CGSize 是结构体, 包含 width, height 两个成员变量, 代表完整内容宽度和高度...委托方式 : UITextView 将事件交给委托对象处理, 其委托对象实现了 UITextViewDelegate 协议, 下面介绍该协议各种方法; -- "- textViewShouldBeginEditing...设置 UITextView 协议委托者 :  //设置 UITextView 控件委托对象为本类 OCViewController 对象 self.textView.delegate

    6.8K20
    领券