Search code examples
iosuiimagecalayeruigraphicscontext

Merge CATextLayer and UIImage


I want to merge My CATextLayer with UIImage to one UIImage. I'm using this code:

let textViewLayer = CATextLayer()
        textViewLayer.frame = CGRect(origin: CGPoint(x: lockText.imagePositionX, y: lockText.imagePositionY), size: lockImageView.frame.size)
        textViewLayer.string = lockText.textText
        textViewLayer.font = lockText.textFont.fontName
        textViewLayer.fontSize = lockText.textFontSize
        textViewLayer.foregroundColor = lockText.color.CGColor

        let textView = UIView(frame: lockImageView.frame)
        textView.layer.addSublayer(textViewLayer)

        lockImageView.addSubview(textView)

        UIGraphicsBeginImageContext(lockImageView.frame.size)
        textViewLayer.renderInContext(UIGraphicsGetCurrentContext()!)
        image = UIGraphicsGetImageFromCurrentImageContext()


        UIGraphicsEndImageContext();

But UIGraphicsGetCurrentContext is NIL. Could someone tell, what i'm doing wrong?


Solution

  • I'm using this code to solve my problem:

    UIGraphicsBeginImageContext(image.size);
                image.drawInRect(CGRectMake(0, 0, image.size.width, image.size.height))
                let rect = CGRectMake(lockText.imagePositionX, lockText.imagePositionY, image.size.width, image.size.height);
                lockText.color.set()
    
                let text = lockText.textText as NSString
                text.drawInRect(rect, withAttributes: [NSFontAttributeName : lockText.textFont, NSForegroundColorAttributeName : lockText.color])
                image = UIGraphicsGetImageFromCurrentImageContext();
                UIGraphicsEndImageContext();