如何让 UITextView 根据内容动态调整自身大小
Posted
技术标签:
【中文标题】如何让 UITextView 根据内容动态调整自身大小【英文标题】:How to get a UITextView to dynamically size it's self to it's content 【发布时间】:2013-02-19 11:16:32 【问题描述】:我正在尝试让 UITextView 根据其内容动态调整自身大小。有时文本视图的高度为 100 有时为 700。
到目前为止,我尝试过的所有方法都没有奏效。
我在viewDidLoad
和viewDidLayoutSubviews
中尝试了以下方法。
这是代码:
CGRect frameDesc = self.descriptionDeal.frame;
frameDesc.size.height = self.descriptionDeal.contentSize.height;
self.descriptionDeal.frame = frameDesc;
self.descriptionDeal.backgroundColor = [UIColor redColor];
我添加了背景颜色,这样我就可以看到视图的大小,并且它没有根据内容调整大小。
我也试过了:
[self.descriptionDeal sizeToFit];
另外,不确定它是否会影响任何东西,但在 UITextView 布局的故事中,大小是在那里设置的。我以为上面的代码会覆盖它,但有些东西不能正常工作。
感谢您的帮助
【问题讨论】:
***.com/a/7501164/454165 【参考方案1】:你应该在你的文本视图的代理的textViewDidChange:
method中改变大小
使用https://***.com/a/14956351/1311910 获得合适的高度。
【讨论】:
您提供的第二个链接是此页面的链接,仅供参考。【参考方案2】:尝试以下字符串方法,这些方法可用于获取将字符串显示到视图所需的尺寸。您可以根据从这些方法之一获得的 CGSize 更改 textview 的框架。如果您不打算在项目中使用自动布局来支持早期版本的 ios,请使用此选项。
- (CGSize)sizeWithFont:(UIFont *)font; // Uses NSLineBreakByWordWrapping
- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(NSLineBreakMode)lineBreakMode;
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size; // Uses NSLineBreakModeWordWrap
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode; // NSTextAlignment is not needed to determine size
【讨论】:
以上是关于如何让 UITextView 根据内容动态调整自身大小的主要内容,如果未能解决你的问题,请参考以下文章