当前位置: 首页 > 面试题库 >

Swift-使用drawInRect:withAttributes绘制文本:

章海
2023-03-14
问题内容

我对Xcode 6.1 GM有一个奇怪的问题。

let text: NSString = "A"
let font = NSFont(name: "Helvetica Bold", size: 14.0)

let textRect: NSRect = NSMakeRect(5, 3, 125, 18)
let textStyle = NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy() as NSMutableParagraphStyle
textStyle.alignment = NSTextAlignment.LeftTextAlignment
let textColor = NSColor(calibratedRed: 0.147, green: 0.222, blue: 0.162, alpha: 1.0)

let textFontAttributes = [
    NSFontAttributeName: font,
    NSForegroundColorAttributeName: textColor,
    NSParagraphStyleAttributeName: textStyle
]

text.drawInRect(NSOffsetRect(textRect, 0, 1), withAttributes: textFontAttributes)

错误处在让texFontAttributes …

Cannot convert the expression's type 'Dictionary' to type 'DictionaryLiteralConvertible'

直到Xcode 6.1 GM,此代码才能正常工作。

当我尝试将textFontAttributes声明为NSDictionary时,错误消息更改为:

Cannot convert the expression's type 'NSDictionary' to type 'NSString!'

我不知道如何解决这个问题:(


问题答案:

问题在于这font是可选的,因为便利构造函数现在返回可选值,因此font需要将其解包为字典中的值:

if let actualFont = font {
    let textFontAttributes = [
        NSFontAttributeName: actualFont,
        NSForegroundColorAttributeName: textColor,
        NSParagraphStyleAttributeName: textStyle
    ]

    text.drawInRect(NSOffsetRect(textRect, 0, 1), withAttributes: textFontAttributes)
}


 类似资料:
  • 问题内容: 我正在尝试在UIImageView上绘制。使用Swift 1.2,我能够使其工作,但是我不得不将其转换为swift 3.0,而我却无法使其工作。 它需要做的就是用手指在屏幕上绘制出精确的图画。 该代码没有错误,但是什么也不显示。 变量; 代码; 问题答案: 您必须开始图像上下文: 您还必须摸索路径: 您也没有绘制上一张图像: 从而:

  • 问题内容: 我正在尝试为UILabel绘制渐变,但它只会绘制我看不到文本的颜色。我从这里看到了代码StackOverflow 我的修改: 和imageView的设置 代码的结果: 问题答案: 有一种更简单的方法来获取渐变作为。您可以使用。例如: 要将渐变应用于文本,下一步需要使用作为using 返回的图像。例如: 结果是: 迅捷的3.0:

  • 在此输入图像说明 你能告诉我如何在ios swift中实现这个动态图吗

  • Matplotlib 支持广泛的文本格式,比如 TTF 页面语言、Unicode 字符等。这是因为 Matplotlib 内置了 matplotlib.font_manager 字体管理器,它是一个实现了跨平台,并符合 W3C 字体查找算法的字体集合。 TTF(TrueType Font) 是苹果公司和微软公司合作开发的页面描述语言,用来描述字符的轮廓,结合了光栅技术和矢量技术的优点。 用户可以对

  • 画布中不仅可以绘制图形,还可以绘制文本。绘制文本,既可以使用填充方法,也可以使用勾勒方法: fillText(text, x, y, [maxWidth]) strokeText(text, x, y, [maxWidth]) 表示在(x,y)的位置,绘制text的内容。可选参数maxWidth为文本的最大宽度,单位为像素。如果设置了该属性,当文本内容宽度超过该参数值,则会自动按比例缩小字体,使

  • 文本与图形总是如影随形。为此,2D 绘图上下文也提供了绘制文本的方法。绘制文本主要有两个方法:fillText()和strokeText()。这两个方法都可以接收4 个参数:要绘制的文本字符串、x 坐标、y 坐标和可选的最大像素宽度。而且,这两个方法都以下列3 个属性为基础。 font:表示文本样式、大小及字体,用CSS 中指定字体的格式来指定,例如"10px Arial"。 textAlign: