1

我是 iOS 开发的初学者,我无法自动调整 UITextView 的大小。

我创建了一个主从应用程序。在我的 DetailViewController.xib 上,我添加了一个 ScrollView,其中包含一个标题标签、一个图像和一个在此图像下的 TextView,以便放置用户发布的描述。
问题是描述取决于我的 WebService 返回的内容,所以我需要自动调整它的大小。

这是我的代码:

- (void)configureView
{
    ...
    self.detailDescriptionTextView.text = [self.detailItem valueForKey:@"adDescription"];

    CGRect frame = self.detailDescriptionTextView.frame;
    frame.size.height = self.detailDescriptionTextView.contentSize.height;
    self.detailDescriptionTextView.frame = frame;
)

问题是 TextView 正确获取了内容,但它根本没有调整大小..我寻找了一段时间的答案,大多数答案都是我尝试过的......

谢谢你的帮助。

编辑:我意识到了一些事情。为了在描述下放一些元素,我在Interface Builder中放了一个很小的TextView用于描述,是不是有问题?如果是,我怎么能把其他元素放在这个TextView下,因为Interface Builder上没有更多空间了?

编辑2:我终于成功了。似乎问题在于我通过 Interface Builder 创建了 TextView。通过以编程方式创建它,它运行良好。如果它可以帮助某人,这是我的代码:

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 195, 280, 10)];
textView.text = [self.detailItem valueForKey:@"adDescription"];
textView.font = [UIFont fontWithName:@"Hevlatica" size:14];
[self.scrollView addSubview:textView];
CGRect descriptionFrame = textView.frame;
descriptionFrame.size.height = textView.contentSize.height;
textView.frame = descriptionFrame;

谢谢你的帮助。

4

2 回答 2

4

首先使用计算内容高度

NSString *content = @"Hello how are you.";
CGSize size = [content sizeWithFont:[UIFont systemFontOfSize:14]
              constrainedToSize:CGSizeMake(yourWidth, MAX_HEIGHT)
                  lineBreakMode:UILineBreakModeWordWrap];

然后设置 textView 的框架

[self.textView setFrame:CGRectMake(5, 30, 100, size.height + 10)];

或者

将内容添加到您的文本视图,然后尝试这个

CGRect frame = self.textView.frame;
frame.size.height = self.textView.contentSize.height;
self.textView.frame = frame;

希望这可以帮助 !!!

于 2013-03-15T12:52:44.273 回答
1
 CGSize constraint = CGSizeMake(690.0, 2000.0);
 int h=10;
 CGSize size_txt_overview1 = [[self.detailItem valueForKey:@"adDescription"] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:18] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
frame.size.height = size_txt_overview1.height;
self.detailDescriptionTextView.frame = frame;
于 2013-03-15T12:50:14.803 回答