【问题标题】:sizeWithFont returns wrong height in UITextFieldsizeWithFont 在 UITextField 中返回错误的高度
【发布时间】:2012-03-20 19:36:52
【问题描述】:
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 总是相等的)-这是不对的-感谢 jaydee3

返回的高度错误,剪掉了文字。

有什么想法吗?

解决方案:(适用于 Helvetica、Helvetica-Bold 和任何其他字体)

将 rowSize 的宽度减少边距 (15) 会返回 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);

感谢甘佐洛!

【问题讨论】:

  • 你确定字体的名字吗?
  • 它们显示在 UITextField 中,我可以看到字体名称是正确的。

标签: objective-c ios uitextfield


【解决方案1】:

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

因此,在您的限制大小中,您应该删除宽度组件上 UITextField 的边距。

【讨论】:

  • 谢谢,我的问题解决了!
【解决方案2】:

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

【讨论】:

  • 问题是高度总是一样的,但是当有换行时,Helvetica中显示的消息需要一行,Helvetica-Bold中显示的消息需要两行,两者的高度都是还是一样的……
  • 那么你必须给它正确的约束。请发布代码,它不工作......该代码按预期工作。
  • 抱歉,你是对的。可能真的是 Ganzolo 提到的保证金问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
相关资源
最近更新 更多