Нарисуйте текст на изображении под углом [Swift 3]


Я пытаюсь создать функцию, которая будет брать текст из текстового поля (textField) и рисовать его на изображении. Функция в данный момент может изменять только координаты чертежа x и y, а также ширину и высоту. Мне было интересно, как я могу сделать так, чтобы текст был нарисован под углом (например, 45, 18 и т. д...)

Заранее благодарю.

func drawText() {
    let font = UIFont.boldSystemFont(ofSize: 30)
    let showText:NSString = textField.text as! NSString
    // setting attr: font name, color...etc.
    let attr = [NSFontAttributeName: font, NSForegroundColorAttributeName:UIColor.white]
    // getting size
    let sizeOfText = showText.size(attributes: attr)

    let image = UIImage(named: "image")!
    let rect = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)

    UIGraphicsBeginImageContextWithOptions(CGSize(width: rect.size.width, height: rect.size.height), true, 0)

    // drawing our image to the graphics context
    image.draw(in: rect)
    // drawing text
    showText.draw(in: CGRect(x: rect.size.width-sizeOfText.width-10, y: rect.size.height-sizeOfText.height-10, width: rect.size.width, height: rect.size.height), withAttributes: attr)

    // getting an image from it
    let newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext()

    self.imageView.image = newImage
}
1 2

1 ответ:

1.Сначала нарисуйте текст на изображении,а затем поверните его.

2.Нарисуйте повернутое изображение (с текстом) На фоновом изображении.

    //First create the rotated and transparent image with text        
    UIGraphicsBeginImageContextWithOptions(CGSize(width: rect.size.width, height: rect.size.height), false, 0)
    if let context = UIGraphicsGetCurrentContext() {
        context.rotate (by: 45.0 * CGFloat.pi/180.0) //45˚
    }
    showText.draw(in: CGRect(x: 10, y: 10, width: rect.size.width, height: rect.size.height), withAttributes: attr)
    let rotatedImageWithText = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext()


    //Then, draw rotated image(with text) onto the background image
    UIGraphicsBeginImageContextWithOptions(CGSize(width: rect.size.width, height: rect.size.height), true, 0)

    image.draw(in: rect)
    rotatedImageWithText?.draw(in: rect)

    let newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext()

    self.imageView.image = newImage