ios - BoundingRectWithSize - 选择使用的字体和字体大小

标签 ios swift fonts uibutton uilabel

我正在使用 BoundingRectWithSize 取回一个 CGRect,它将适本地修复我的文本。 我以前有这个代码。

var maximumLabelSize: CGSize = CGSize(width: view.bounds.width-5, height: 150)
         var maximumLabelSize: CGSize = CGSize(width: view.bounds.width-5, height: 150)
    var labelRect: CGRect = (matches[indexPath.item].name as NSString).boundingRectWithSize(maximumLabelSize, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont.systemFontOfSize(16)], context: nil)

将字体更改为 HelviticaNeue-Bold 时,我的许多标签都没有全屏显示。我的假设是,由于我将字体更改为粗体,文本不再适合其边界 CGRects,因此将字符串剪短。

我建议的修复是编辑为我的文本创建初始适当边界 CGRect 的代码,以考虑到文本的粗体性质。这是我的尝试。

var labelRect: CGRect = (matches[indexPath.item].name as NSString).boundingRectWithSize(maximumLabelSize, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont(name: "HelveticaNeue-Bold", size: 16)], context: nil)

我收到一条错误消息,指出我提供的参数不正确。

Cannot invoke 'boundingRectWithSize' with an argument list of type '(CGSize, options: NSStringDrawingOptions, attributes: [String : UIFont?], context: nil)'

根据 iOS 开发者库,这些是合适的参数。

func boundingRectWithSize(_ size: CGSize,
                  options options: NSStringDrawingOptions,
               attributes attributes: [String : AnyObject]?,
                  context context: NSStringDrawingContext?) -> CGRect

冲突在属性内部,显然是我更改的区域,但至少这证实了这一点。我不确定如何进一步寻求解决方案。任何有助于理解这一点的帮助将不胜感激。

最佳答案

在进一步分析我自己提供的 boundingRectWithSize 参数与 iOS 开发人员库中列出的参数之间的对比后,我想知道如果我将 UIFont 转换为 AnyObject 会发生什么。

var labelRect: CGRect = (matches[indexPath.item].name as NSString).boundingRectWithSize(maximumLabelSize, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont(name: "HelveticaNeue-Bold", size: 16) as! AnyObject], context: nil)

boundingRectWithSize 的属性参数接受类型 [String : AnyObject] 而我应该提供 [String : UIFont?]。我类型转换了我的 UIFont?到任何对象。这消除了错误,也解决了我的问题。粗体文本不再被缩短。已解决。

关于ios - BoundingRectWithSize - 选择使用的字体和字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31682343/

相关文章:

ios - Assets 目录与文件夹引用 : When to use one or the other?

ios - 如果不快速执行任何操作,如何重复本地通知

ios - ios中的静态库

html - 字体不会在不同的浏览器中呈现

c - 使用 emWin 和韩语字体时显示错误字形

ios - Paypal 移动 express 重定向到网络而不是移动

ios - Realm :无法将主键属性 'id' 设置为现有值

ios - 在选项卡栏 Controller 中从 SecondView 刷新 FirstView

ios - UITableViewCell 中的多行标签不适用于 iOS 9 或 Swift 2.0

javascript - 根据 div 宽度调整文本大小