UIView 中的 CG 绘图用作 UIImage?

Posted

技术标签:

【中文标题】UIView 中的 CG 绘图用作 UIImage?【英文标题】:CG drawing in UIView to use as UIImage? 【发布时间】:2012-10-12 17:27:59 【问题描述】:

我正在尝试为 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];

这甚至是解决这个问题的最佳方式吗?还是我应该把它吸起来并在 Photoshop 中创建一个图像?

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于UIView 中的 CG 绘图用作 UIImage?的主要内容,如果未能解决你的问题,请参考以下文章

使用drawRect延迟加载UIView:绘图

清除绘图的UIView?

从 UIView 子类创建 CGImage

iOS图像处理之UI,CG和CI

CGImageRef cg = [[UIImage imageNamed: Path] CGImage];需要 CGImageRelease(cg)'?

UIView 中的 UIImage 尺寸太大