CG рисунок в UIView для использования в качестве UIImage?

Я пытаюсь создать пользовательскую кнопку возврата для UINavigationbar.

Я знаю, что я могу использовать backButtonBackgroundImageForState:barMetrics: установить изображение.

Моя проблема в том, что мне не нужно использовать файл изображения. Я бы предпочел нарисовать кнопку возврата в коде.

Мой вопрос заключается в том, могу ли я создать подкласс UIView, переопределить drawrec: нарисовать кнопку назад, а затем использовать этот UIView в качестве изображения в backButtonBackgroundImageForState:barMetrics:

Я думаю, что это будет что-то вроде:

UIImage * backButtonImage = // somehow get image from my subclassed UIView;

backButtonImage = [backButtonImage stretchableImageWithLeftCapWidth: 15.0 topCapHeight: 30.0];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage: backButtonImage forState: UIControlStateNormal barMetrics: UIBarMetricsDefault];

Это даже лучший способ идти об этом? Или мне просто смириться с этим и создать изображение в фотошопе?

1 ответ

Решение

Вы можете создать контекст растрового изображения, используя UIGraphicsBeginImageContextWithOptionsбез создания подкласса UIView и переопределение drawRect:,

UIGraphicsBeginImageContextWithOptions(CGSizeMake(80, 30), NO, 0);
// drawing code here
// Use UIKit functions and objects
// or use CoreGraphics functions on UIGraphicsGetCurrentContext()
UIImage *image = UIGraphicsGetImageFromCurrentContext();
UIGraphicsEndImageContext();
Другие вопросы по тегам