【问题标题】:How to get a UITextView to dynamically size it's self to it's content如何让 UITextView 根据内容动态调整自身大小
【发布时间】:2013-02-19 11:16:32
【问题描述】:

我正在尝试让 UITextView 根据其内容动态调整自身大小。有时文本视图的高度为 100 有时为 700。

到目前为止,我尝试过的所有方法都没有奏效。

我在viewDidLoadviewDidLayoutSubviews 中尝试了以下方法。 这是代码:

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 布局的故事中,大小是在那里设置的。我以为上面的代码会覆盖它,但有些东西不能正常工作。

感谢您的帮助

【问题讨论】:

标签: iphone ios objective-c uitextview


【解决方案1】:

你应该在你的文本视图的代理的textViewDidChange:method中改变大小

使用https://stackoverflow.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

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 2014-03-30
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2013-11-19
    • 1970-01-01
    相关资源
    最近更新 更多