0

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

谢谢你的帮助

4

2 回答 2

1

您应该在文本视图的委托textViewDidChange: 方法中进行大小更改

使用https://stackoverflow.com/a/14956351/1311910获得合适的高度。

于 2013-02-19T11:28:15.107 回答
0

尝试以下字符串方法,这些方法可用于获取将字符串显示到视图所需的尺寸。您可以根据从这些方法之一获得的 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
于 2013-02-19T11:27:38.200 回答