如何根据其内容调整UITextView的框架

时间:2012-08-08 15:01:19

标签: iphone ios ipad xcode4.2

在我的应用程序中,我需要在包含文本的textview中存储确切的区域(高度和宽度)。

我有一个宽度 300 的UITextView。现在假设用户会填写一些文本,这些文本只填充 150 ,即 50% TextView的宽度。我如何知道textview中有多少部分包含文本? ?我只想存储 150 而不是 300 ,即我需要排除不包含文本的textview的冗余部分。

但是,通过 textview.contentSize.height ,我可以获得准确的高度。 但 textview.contentSize.width 未提供适当的结果

任何建议????

2 个答案:

答案 0 :(得分:2)

您需要在UITextView的范围内计算文本的大小:

CGSize textSize = [@"Some text" sizeWithFont:[UIFont boldSystemFontOfSize:12] forWidth:CGRectGetWidth(textView) lineBreakMode:UILineBreakModeCharacterWrap];

从此处可以使用textSize.height属性设置UITextView的高度。

请注意,您可能需要调整字体大小和forWidth:大小以匹配您的UITextView,但这应该可以让您入门。

答案 1 :(得分:0)

这直接来自我的工作代码:

//Make the textView as big as needed for it to fit the message body
CGSize stringSize = [m.msg_body sizeWithFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:13]
                           constrainedToSize:CGSizeMake(self.view.frame.size.width, 9999) 
                               lineBreakMode:UILineBreakModeWordWrap];

messageTextView.frame = CGRectMake(0, 0, stringSize.width, stringSize.height + 10);