我有一个由iOS和OSX共享的类。升级到Swift 3后,代码如下:
let textSize = ("999" as NSString).size(withAttributes: [NSFontAttributeName:labelFont!])
...导致iOS版本出现以下错误:
调用中的参数标签不正确(具有'withAttributes:',expected'属性:')。
修正如下:
let textSize = ("999" as NSString).size(attributes: [NSFontAttributeName:labelFont!])
但是OSX版本有错误:
调用中的参数标签不正确(具有'属性:',期望'withAttributes:')
为什么NSString对iOS和OSX构建的处理方式不同?
(我使用扩展程序解决了这个问题。所有其他共享代码都已成功转换为Swift 3。)
答案 0 :(得分:2)
NSString
调整大小的方式不同主要是由于每次使用的衡量方法......(NSSize
v CGSize
):
OS X:
extension NSString {
@available(OSX 10.0, *)
open func size(withAttributes attrs: [String : Any]? = nil) -> NSSize
...
}
<强>的iOS:强>
extension NSString {
@available(iOS 7.0, *)
open func size(attributes attrs: [String : Any]? = nil) -> CGSize
...
}
除了使用NSSize
的OS X和使用CGSize
的iOS之外,它们具有非常相似的&#34;大小&#34;除前者使用AppKit
而后者使用UIKit
的方法。