Я создал этот метод, который генерирует и изображение из оригинала, но добавляет дополнение к новому изображению в соответствии с заданным размером. Все работает отлично, за исключением того, что цвет фона изображения всегда черный, но я устанавливаю белый цвет заливки. Любая идея, как это исправить?Swift - базовая графика и настройка цвета фона?
public extension UIImage {
public func imageCenteredInParentWithSize(size: CGSize, backgroundColor: UIColor = UIColor.clearColor()) -> UIImage {
UIGraphicsBeginImageContextWithOptions(CGSizeMake(size.width, size.height), true, 0.0)
let context = UIGraphicsGetCurrentContext()
UIGraphicsPushContext(context);
let origin = CGPointMake(
(size.width - self.size.width)/2.0,
(size.height - self.size.height)/2.0
)
backgroundColor.setFill()
drawAtPoint(origin)
UIGraphicsPopContext()
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
}
EDIT:
Вот рабочая версия
public func imageCenteredInParentWithSize(size: CGSize, backgroundColor: UIColor = UIColor.clearColor()) -> UIImage {
UIGraphicsBeginImageContextWithOptions(CGSizeMake(size.width, size.height), true, UIScreen.mainScreen().scale)
let context = UIGraphicsGetCurrentContext()
let origin = CGPointMake(
(size.width - self.size.width)/2.0,
(size.height - self.size.height)/2.0
)
backgroundColor.setFill()
CGContextFillRect(context, CGRectMake(0, 0, size.width, size.height))
drawAtPoint(origin)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
Удивительно, это исправило проблему, обновит мой вопрос с исправлением – aryaxt