2012-03-02 91 views
1
NSString *message = @"Can be a short string or a very long string"; 

CGSize rowSize = [message sizeWithFont:[UIFont fontWithName:@"Helvetica" size:16.0] constrainedToSize:CGSizeMake(250, 1000) lineBreakMode:UILineBreakModeWordWrap]; 

CGSize rowSizeBold = [message sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" size:16.0] constrainedToSize:CGSizeMake(250, 1000) lineBreakMode:UILineBreakModeWordWrap]; 

返回错误高度(rowSize.height和rowSizeBold.height总是相等) - 这是不正确的 - THX,以jaydee3sizeWithFont中的UITextField

返回的高度是错误的,片断的文本。

任何想法?

溶液:(适用于黑体,黑体-粗体和任何其他字体)

由余量(15)减少ROWSIZE的宽度返回的UITextField合适的高度。

NSString *message = @"Can be a short string or a very long string"; 

CGSize rowSize = [message sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" size:16.0] constrainedToSize:CGSizeMake(235, 1000) lineBreakMode:UILineBreakModeWordWrap]; 

UITextField *messageTextView.frame = CGRectMake(60, 10, 250, rowSize.height); 

thx to Ganzolo!

+0

你确定字体的名称? – Ganzolo 2012-03-02 09:46:28

+0

它们显示在UITextField中,我可以看到字体名称是正确的。 – 2012-03-02 09:51:19

回答

0

如果你使用UITextField来显示字体,你可能会得到这个错误的结果,因为UITextField有余量。

因此,在你的约束大小,你应该删除宽度组件的UITextField的边距。

+0

谢谢,这是我的问题的解决方案! – 2012-03-02 11:12:31

0

只需复制&粘贴您的代码。一切都很好:

resulting sizes

+0

问题是高度总是相同,但是当出现换行符时,在Helvetica中显示的消息需要一行,而Helvetica-Bold中的消息需要两行,两者的高度仍然相等... – 2012-03-02 10:24:19

+0

然后,您有给它正确的约束。请发布代码,该代码无法正常工作...该代码按预期工作。 – calimarkus 2012-03-02 10:29:14

+0

sry你说得对。 Ganzolo可能会提到这个问题。 – 2012-03-02 10:31:28