将 sizeWithFont 方法转换为 Swift

Posted

技术标签:

【中文标题】将 sizeWithFont 方法转换为 Swift【英文标题】:Converting sizeWithFont method to Swift 【发布时间】:2016-02-16 09:55:09 【问题描述】:

我正在阅读旧的 obj-c 教程并且很难理解 obj-c 代码。而且它们显然已被弃用。 我研究了其他 *** 问题,但我仍然无法弄清楚,因为它们都不是 Swift 中的。

   CGSize textSize = [text sizeWithFont:textFont constrainedToSize:CGSizeMake(printableFrame.size.width, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
   CGRect textFrame = CGRectMake(printableFrame.origin.x, currentY, textSize.width, textSize.height);

如何将上述代码转换为 Swift?

【问题讨论】:

我确信 –sizeWithFont:constrainedToSize:ios7 以来已被弃用。 【参考方案1】:

该方法已被弃用,取而代之的是 sizeWithAttributes。

Replacement for deprecated sizeWithFont: in iOS 7?

不幸的是,要转换为 swift,您似乎必须在代码中使用 NSString

CGSize sizeWithAttributes in Swift

干净,但这会影响性能,因此如果这些行被大量调用,您可能需要寻找其他解决方案。

【讨论】:

以上是关于将 sizeWithFont 方法转换为 Swift的主要内容,如果未能解决你的问题,请参考以下文章

在iOS 7中替换已弃用的sizeWithFont:

sizeWithFont:constrainedToSize:lineBreakMode: 在 iOS7 中已弃用

sizeWithFont:在 iOS 7 中

sizeWithFont: ConstrainedToSize: lineBreakMode: 方法在 iOS 7 中已弃用

sizeWithFont 返回随机值

如果要换行的文本中有长字符串,则 sizeWithFont 不会为 UITextView 提供正确的高度