2013-10-11 52 views
3

我已经阅读了本网站上的几个解决方案并尝试了所有这些解决方案,但仍然没有运气。目前我的测试是一个viewController,其上有一个UITextView。我正在尝试根据文字大小调整我的UITextView的高度。根据文本大小更改UITextView的高度 - ios7

好:下面引用的解决方案似乎给了我在UITextView中设置的正确高度。

Link

坏:获得理想的高度回来后,似乎UITextView不会允许高度进行设置。下面的代码显示了我用来完成这个的几个不同的尝试。目前第三种尝试方法似乎是最接近的,但它仍然留给我一个固定的高度UITextViewenter image description here

这是我第三次使用的最新日志的输出结果。它似乎一切正常,但UITextView没有得到调整。

2013-10-11 08:27:03.374 textexpand[25273:a0b] The bounds height 872.000000 
2013-10-11 08:27:03.377 textexpand[25273:a0b] The frame height 872.000000 
2013-10-11 08:27:03.378 textexpand[25273:a0b] The frame height 872.000000 
2013-10-11 08:27:03.380 textexpand[25273:a0b] The frame height 785.000000 
2013-10-11 08:27:03.381 textexpand[25273:a0b] The bounds height 785.000000 

下面是代码:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

[self thirdtry]; 

} 

////

- (void) firsttry 
{ 
NSString *theText = @"Here is the text I am going to load into the textview. The text view should automatically expand the height based on the size of the content, but leave the width static. Also, I would ideally add my own padding to the bottom and top of the uitext view. More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text"; 

_theTextView.text = theText; 

_theTextView.scrollEnabled = NO; 
[_theTextView sizeToFit]; 
[_theTextView layoutIfNeeded]; 

CGRect frame = _theTextView.frame; 
frame.size.height = _theTextView.contentSize.height; 
_theTextView.frame = frame; 

} 

////

- (void) secondtry 
{ 
NSString *theText = @"Here is the text I am going to load into the textview. The text view should automatically expand the height based on the size of the content, but leave the width static. Also, I would ideally add my own padding to the bottom and top of the uitext view. More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text"; 

NSAttributedString *attText = [[NSAttributedString alloc] initWithString:theText attributes:nil]; 
CGRect frame = _theTextView.frame; 
CGFloat myfloat = [self textViewHeightForAttributedText:attText andWidth:100]; 
NSLog(@"The float is %f", myfloat); 
frame.size.height = [self textViewHeightForAttributedText:attText andWidth:100]; 
_theTextView.frame = frame; 


} 

////

- (void) thirdtry 
{ 

_theTextView.scrollEnabled = NO; 

NSString *theText = @"Here is the text I am going to load into the textview. The text view should automatically expand the height based on the size of the content, but leave the width static. Also, I would ideally add my own padding to the bottom and top of the uitext view. More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text More text"; 

NSAttributedString *attText = [[NSAttributedString alloc] initWithString:theText attributes:nil]; 

//Attempt to adjust the bounds 
CGRect bounds = _theTextView.bounds; 
bounds.size.height = [self textViewHeightForAttributedText:attText andWidth:100]; 
NSLog(@"The bounds height %f", bounds.size.height); 
_theTextView.bounds = bounds; 

//Attempt to adjust the frame 
CGRect frame = _theTextView.frame; 
frame.size.height = [self textViewHeightForAttributedText:attText andWidth:100]; 
_theTextView.frame = frame; 
NSLog(@"The frame height %f", frame.size.height); 

NSLog(@"The frame height %f", _theTextView.frame.size.height); 
[_theTextView sizeToFit]; 
NSLog(@"The frame height %f", _theTextView.frame.size.height); 
} 

////

- (CGFloat)textViewHeightForAttributedText: (NSAttributedString*)text andWidth: (CGFloat)width 
{ 
UITextView *calculationView = [[UITextView alloc] init]; 
[calculationView setAttributedText:text]; 
CGSize size = [calculationView sizeThatFits:CGSizeMake(width, FLT_MAX)]; 
return size.height; 

} 

更新:

我应该用这种方法初始化我的代码里面uitextbox补充一点,我可以得到想要的效果:

CGFloat myfloat= [self textViewHeightForAttributedText:attText andWidth:300]; 
_theTextView = [[UITextView alloc] initWithFrame:CGRectMake(350, 100, 300, myfloat)]; 
_theTextView.text = theText; 
[_theview addSubview:_theTextView]; 

但是,我不想这样做,并在飞行中调整在IB中定义的帧。

回答