我是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;
感谢您的帮助。
答案 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;