我正在尝试使用Xcode 6.0.1将目标字符串绘制到UIView上,其目标是iPad2 iOS 7.1
我发现有些字符串可以正常使用,但其他字符串会使应用程序崩溃。
经过多次实验,我在以下代码中找出了问题所在:
import UIKit
class myview: UIView
{
override func drawRect(rect: CGRect)
{
let tick = "✓"
let x = "t"
let xtick="✓t"
// try next line with c=tick, then c=x and then c=xtick
let c=tick
var attrs = [NSFontAttributeName : UIFont(name: "ArialRoundedMTBold", size:54.0),NSForegroundColorAttributeName:UIColor.greenColor().CGColor]
c.drawAtPoint(CGPointMake(80,220), withAttributes:attrs)
}
}
使用c = tick
或c = xtick
一切正常,但如果您let c = x
应用程序崩溃。
如果您注释掉drawAtPoint
行,则不会发生崩溃,因此这是触发器。
第一条崩溃讯息是:
- [__ NSCFType set]:无法识别的选择器发送到实例0x7aee4f00
我做错了什么或这是编译器错误?
答案 0 :(得分:1)
您必须传递UIColor
而不是CGColorRef
,因此请移除CGColor
并仅保留此内容:
var attrs = [NSFontAttributeName : UIFont(name: "ArialRoundedMTBold", size:54.0),NSForegroundColorAttributeName:UIColor.greenColor()]
答案 1 :(得分:1)
你正在使用带有UIColor的CGColor,请将.CGColor从属性中删除它会正常工作。它在iOS 9中运行良好,但在较低版本中它不支持这就是为什么这个问题产生的。
var attrs = [NSFontAttributeName : UIFont(name: "ArialRoundedMTBold", size:54.0),NSForegroundColorAttributeName:UIColor.greenColor()];