当我试图将我的应用程序升级到Swift 2时,出现了两个错误。
这两个错误是:
使用未解析的标识符“kCGPathStroke”
以及:
无法将“NSMutableDictionary”类型的值转换为预期值
参数类型“[String:AnyObject]?”
这两个问题在下面的代码中都有注释。我检查了文档,看起来好像kCGPathStroke
仍然存在,所以我真的很困惑为什么它被打破了。我做错什么了?
import UIKit
import CoreGraphics
class MIBadgeLabel: UILabel {
override func drawRect(rect: CGRect)
{
// Drawing code
let ctx: CGContextRef = UIGraphicsGetCurrentContext()!
let borderPath: UIBezierPath = UIBezierPath(roundedRect: rect, byRoundingCorners:UIRectCorner.AllCorners, cornerRadii: CGSizeMake(10.0, 10.0))
CGContextSetFillColorWithColor(ctx, UIColor.whiteColor().CGColor)
CGContextSaveGState(ctx)
CGContextAddPath(ctx, borderPath.CGPath)
CGContextSetLineWidth(ctx, 4.0)
CGContextSetStrokeColorWithColor(ctx, UIColor.clearColor().CGColor)
CGContextDrawPath(ctx, kCGPathStroke) //Swift 2 error
CGContextRestoreGState(ctx)
CGContextSaveGState(ctx)
// CGContextSetFillColorWithColor(ctx, UIColor.whiteColor().CGColor)
var textFrame: CGRect = rect
let labelString: NSString = self.text! as NSString
let textSize: CGSize = labelString.sizeWithAttributes([NSFontAttributeName : UIFont.systemFontOfSize(13.0)])
textFrame.size.height = textSize.height
textFrame.origin.y = rect.origin.y + ceil((rect.size.height - textFrame.size.height) / 2.0)
let paragraphStyle: NSMutableParagraphStyle = NSMutableParagraphStyle();
paragraphStyle.alignment = .Center
var attributes: NSMutableDictionary = [NSFontAttributeName: UIFont.systemFontOfSize(13.0), NSForegroundColorAttributeName : UIColor.whiteColor(), NSParagraphStyleAttributeName:paragraphStyle]
labelString.drawInRect(textFrame, withAttributes: attributes) // Swift 2 error
}
}
最佳答案
第一个错误:
CGContextDrawPath(ctx, kCGPathStroke)
这样地:
CGContextDrawPath(ctx, .Stroke)
第二个错误:
var attributes: NSMutableDictionary = [
NSFontAttributeName: UIFont.systemFontOfSize(13.0),
NSForegroundColorAttributeName : UIColor.whiteColor(),
NSParagraphStyleAttributeName:paragraphStyle
]
这样地:
let attributes = [
NSFontAttributeName: UIFont.systemFontOfSize(13.0),
NSForegroundColorAttributeName : UIColor.whiteColor(),
NSParagraphStyleAttributeName:paragraphStyle
]
关于ios - 如何使kCGPathStroke在Swift 2中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32871234/