2013-03-13 93 views
0

我有一个名为profileDescription的UITextView,它位于滚动视图内。我想调整这个视图的高度,以便它扩展以占用尽可能多的空间。我正在使用故事板与Autolayout打开。我试图关掉它,但它让其他事情变得更糟,所以我现在就把它放下。无法调整大小UITextView

我尝试使用下面的代码,但它没有任何效果:

self.profileDescription.text = @"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; 

[self.profileDescription setScrollEnabled:NO]; 

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

回答

3

当打开Autolayout功能时,有一个简单的修复方法。

实施viewDidLayoutSubviews,这将调用视图控制器的视图的layoutSubviews方法后调用。

示例代码:

- (void)viewDidLayoutSubviews 
{ 
    self.yourTextField.frame = CGRectMake(361, 226, 400, 100); 
} 
+0

我会再试一次,但我曾尝试在该方法中添加代码,但没有发生任何事情。 – Jon 2013-03-13 23:21:40

+0

你能否请你用你的textfeild检查你的xib连接? – 2013-03-13 23:28:51

+0

文本在UITextView中设置得很好。还有什么要检查? – Jon 2013-03-14 12:51:23

0

尝试明确设置的UITextView的框架设置文本,看看是否有什么差别了。 UITextView需要知道文本视图的宽度,以便它可以正确地确定contentSize.height应该是什么。

+0

它已经因为界面生成器的东西,对不对?它能够呈现文本就好。我无法调整它。 – Jon 2013-03-13 19:49:40

0

从我的理解,你希望你的UITextView扩展到文本的大小,以便它的垂直尺寸与文本一样高。

你需要计算你的文本的高度,并相应地设定垂直尺寸(注:我适应这从一个UILabel而不是UITextView的一个项目,我没有测试过这个版本):

CGSize maxLabelSize = CGSizeMake(somewidth, 9999); 
CGSize expectedSize = [yourText sizeWithFont:textView.font constrainedToSize:maxLabelSize lineBreakMode:NSLineBreakByWordWrapping]; 
CGRect newFrame = textView.frame; 
newFrame.size.height = expectedSize.height; 
textView.frame = newFrame; 
+0

我在我的项目中试过这段代码,它什么都没做。 – Jon 2013-03-13 20:15:07

+0

这意味着事后正在改变它。你把代码放在哪里(用什么方法)?按照Ramshad的建议,您可能想在viewDidLayoutSubviews中使用它。 – Mirkules 2013-03-13 21:30:26