自动调整UITextView的大小

时间:2013-03-15 12:44:50

标签: objective-c resize uitextview

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

我创建了一个Master-Detail应用程序。在我的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;

感谢您的帮助。

2 个答案:

答案 0 :(得分: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)];

或者

将内容添加到textview,然后尝试此

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

希望这有助于!!!

答案 1 :(得分: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;