Swift:在 swift 2.2 中获取字符串宽度以制作框架(使用 CGRect)
Swift: Getting a string width to make a frame (using CGRect) in swift 2.2
如何在 swift 2.2 和 iOS 9 中获取字符串的宽度?
我想要做的是以编程方式创建一个 UIButton,但它的框架需要适合将在运行时推断的标题大小。
注意:我们知道框架的高度。
设置按钮文本后,只需调用:-
yourButton.sizeToFit()
您可以通过将按钮标题文本声明为 NSString
来获取尺寸。试试这个:
let title: NSString = "some title"
let size = title.sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(20.0)]) //you can add NSForegroundColorAttributeName as well
不要使用框架。使用自动布局。如果您使用自动布局将此按钮放置在界面中,它将自动调整大小以适合其文本。
您可能想要使用 NSString
方法 boundingRectWithSize:options:attributes:context:。
例如:
let rectNeeded = aString.boundingRectWithSize(CGSize(width: yourWidth, height: yourHeight), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName: aFont!], context: nil)
请注意,在使用此方法之前,您需要将 String 转换为 NSString。
如何在 swift 2.2 和 iOS 9 中获取字符串的宽度?
我想要做的是以编程方式创建一个 UIButton,但它的框架需要适合将在运行时推断的标题大小。
注意:我们知道框架的高度。
设置按钮文本后,只需调用:-
yourButton.sizeToFit()
您可以通过将按钮标题文本声明为 NSString
来获取尺寸。试试这个:
let title: NSString = "some title"
let size = title.sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(20.0)]) //you can add NSForegroundColorAttributeName as well
不要使用框架。使用自动布局。如果您使用自动布局将此按钮放置在界面中,它将自动调整大小以适合其文本。
您可能想要使用 NSString
方法 boundingRectWithSize:options:attributes:context:。
例如:
let rectNeeded = aString.boundingRectWithSize(CGSize(width: yourWidth, height: yourHeight), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName: aFont!], context: nil)
请注意,在使用此方法之前,您需要将 String 转换为 NSString。