Я попытался перевод код для Swift 2. Это так близко, как я получил:
extension UIImage {
func withText(text: String) -> UIImage {
UIGraphicsBeginImageContext(size)
let rectangle = CGRect(x: 0, y: 0, width: size.width, height: size.height)
drawInRect(rectangle)
UIColor.redColor().set()
let fontSize = text.characters.count > 200 ? 10 : 14
let font = UIFont.boldSystemFontOfSize(CGFloat(fontSize))
let attributes: [String: AnyObject] = [
NSFontAttributeName: font
]
(text as NSString).drawInRect(rectangle, withAttributes: attributes)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
Как вы можете видеть NSString
«s drawInRect
в настоящее время занимает [String: AnyObject]?
для его атрибутов. Мне не удалось найти соответствующие ключи для lineBreakMode
и alignment
.
Как documentation состояний:
Это те же самые атрибуты, которые могут быть применены к NSAttributedString
объекта ...
Update:
Я добавил другие технические характеристики:
extension UIImage {
func withText(text: String) -> UIImage {
UIGraphicsBeginImageContext(size)
let rectangle = CGRect(x: 0, y: 0, width: size.width, height: size.height)
drawInRect(rectangle)
let fontSize = text.characters.count > 200 ? 10 : 14
let font = UIFont.boldSystemFontOfSize(CGFloat(fontSize))
let paragraphAttributes = NSMutableParagraphStyle()
paragraphAttributes.lineBreakMode = NSLineBreakMode.ByTruncatingTail
paragraphAttributes.alignment = NSTextAlignment.Center
let attributes: [String: AnyObject] = [
NSFontAttributeName: font,
NSForegroundColorAttributeName: UIColor.redColor(),
NSParagraphStyleAttributeName: paragraphAttributes
]
(text as NSString).drawInRect(rectangle, withAttributes: attributes)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
И только упаковывают это было неясно, прежде чем ... Это, как вы бы использовать метод:
// `someImage` is an optional `UIImage` (`UIImage?`), as the initializer is failable
let someImage = UIImage(named: "something.png")
// `imageWithText` is of type `UIImage` here
if let image = someImage {
let imageWithText = someImage.withText("Hello World")
}
// `imageWithText` is of type `UIImage?` here
let imageWithText = someImage?.withText("Hello World")
Спасибо, но я попробовал код и он не работает ... Что я пытаясь сделать, это поместить некоторый текст в любое изображение ... Можете ли вы мне помочь? Спасибо !!! –
Добавлено обновление. Я пробовал это на детской площадке, и это работает. –
Спасибо, это сработало !!!! И, как я могу изменить размер текста, чтобы быть более крупным ??? –