2016-06-02 5 views
0

У меня есть изображение 96x96, и я хотел бы добавить дополнительную ширину, чтобы новое изображение было 120 x 96 с центрированным изображением.Добавить ширину в UIImage?

enter image description here

Выше приведен пример того, что у меня есть. Ниже я хочу (добавлена ​​ширина с исходным изображением, расположенным в нем).

enter image description here

Я попытался следующие, но я получаю причудливо кадрирования:

- (UIImage*)imageWithAddedWhitespaceFromImage:(UIImage *)image { 

    CGSize size = CGSizeMake(96, 96); 
    UIGraphicsBeginImageContext(size); 
    [image drawInRect:CGRectMake(12, 0, size.width + 24, size.height)]; 

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

ответ

1

Вы почти там. Вам нужно создать контекст изображения целевого размера, а затем нарисуйте изображение с оригинальным размером. Комментарии в коде с ** выделите мои изменения.

- (UIImage*)imageWithAddedWhitespaceFromImage:(UIImage *)image { 
    // ** Create context at target size of 120x96 
    CGSize size = CGSizeMake(120, 96); 
    // ** Use this API for properly scaled image (instead of UIGraphicsGetImageFromCurrentImageContext) 
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); 
    // ** Now draw the image offset by 12px 
    [image drawInRect:CGRectMake(12, 0, image.size.width, image.size.height)];  
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 
+1

Вы также должны использовать 'UIGraphicsBeginImageContextWithOptions', чтобы получить правильно масштабированное изображение. – rmaddy

+0

Вы также должны объяснить, что было не так, и что вы изменили. – rmaddy