我想得到一个String的宽度,我得到了使用这个方法的答案(但它只是在OC中):
我在官方API文档中找到它。当然没有Swift版本。
由于我对OC一无所知,我无法用OC语言编写所有代码。但我发现我可以创建一个XXX-Bridging-Header.h
文件,并导入我要在.swift
文件中使用的OC的头文件。
但是我不知道这个函数是哪个头文件。我希望有人可以告诉我文件名或指出另一种获取String宽度的方法。
相当欣赏!!
答案 0 :(得分:2)
在iOS 7.0中不推荐使用sizeWithFont:forWidth:lineBreakMode:
方法。
替换为boundingRectWithSize:options:attributes:context:
,可从Swift获取。
以下是一个用法示例:
let myString = "Hello World" as NSString
let width = 100.0 as CGFloat
let height = 40.0 as CGFloat
let maxSize = CGSizeMake(width, height)
let options: NSStringDrawingOptions = [.TruncatesLastVisibleLine, .UsesLineFragmentOrigin]
let attr = [ NSFontAttributeName : UIFont.systemFontOfSize(17) ]
let labelBounds = myString.boundingRectWithSize(maxSize, options: options, attributes: attr, context: nil)
结果位于labelBounds
CGRect
。对于此示例,它是
{x 0 y 0 w 88.312 h 20.287}
答案 1 :(得分:2)
您想要弃用的功能,并替换为:
CGRect textRect = [text boundingRectWithSize:size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:FONT}
context:nil];
您可以设置尺寸:
CGSize size = textRect.size;
在斯威夫特:
NSString(string).boundingRectWithSize(CGSize(width, DBL_MAX),
options: NSStringDrawingOptions.UsesLineFragmentOrigin,
attributes: [NSFontAttributeName: FONT],
context: nil)
FONT是你想要的字体。
答案 2 :(得分:1)
搜索api documentation,你会发现:NSString。
您可以在NSString中看到它,因此您无需将其添加到桥接标头中。 Swift在swift字符串和NSString之间进行免费桥接,但是,这种方法已被弃用,因此您可能必须明确使用NSString(不推荐)