2016-09-12 53 views
1

我想從Swift中的多個UIBezierPath數組創建UIImage。在Swift中從Uibezierpath數組創建UIImage

我嘗試以下的代碼:

func convertPathsToImage(paths: [UIBezierPath]) -> UIImage{ 

    let imageWidth: CGFloat = 200 
    let imageHeight: CGFloat = 200 

    let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceRGB()! 
    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedLast.rawValue) 
    let context = CGBitmapContextCreate(nil, Int(imageWidth), Int(imageHeight), 8, 0, colorSpace, bitmapInfo.rawValue) 

    CGContextBeginPath(context); 

    UIColor.blackColor().set() 

    for path in paths{ 
     path.stroke() 
    } 

    let newImageRef = CGBitmapContextCreateImage(context); 
    let newImage = UIImage(CGImage: newImageRef!) 

    return newImage 

    } 

結果是一個空的圖像。

有人能解釋我我做錯了什麼嗎?非常感謝你!

+0

您是否將這些路徑添加到視圖的圖層? – EridB

+0

@EridB號我不想將它們添加到視圖的圖層 –

+0

可以附加'[UIBezierPath]'陣列的具體示例嗎? –

回答

1

我不能告訴你你做錯了什麼,但我有一個類似的問題,這段代碼適合我。

func convertPathsToImage(paths: [UIBezierPath]) -> UIImage 
{ 
    let imageWidth: CGFloat = 200 
    let imageHeight: CGFloat = 200 
    let strokeColor:UIColor = UIColor.blackColor() 

    // Make a graphics context 
    UIGraphicsBeginImageContextWithOptions(CGSize(width: imageWidth, height: imageHeight), false, 0.0) 
    let context = UIGraphicsGetCurrentContext() 

    CGContextSetStrokeColorWithColor(context, strokeColor.CGColor) 

    for path in paths { 
     path.stroke() 
    } 
    let image = UIGraphicsGetImageFromCurrentImageContext() 

    UIGraphicsEndImageContext() 

    return image 
} 
+0

感謝您的回覆。我發現了另一個解決方案,但我猜你的代碼也可以。我會接受它作爲正確的答案。 –