我有一个自定义UIImageView,当它构造时,我想创建一个内存或缓存到iDevice Image,它是一个特定颜色的Filled Rectangle,然后将其设置为UIImageView的Image属性。
我知道如何通过覆盖Draw方法在UIImage上绘制它,它只会绘制当前的CGContext。但是,因为我想在构建UIImageView时这样做,所以我实际上没有可以绘制的上下文或任何东西,因为它还不可见。
简单地说,我想知道在应用程序启动之前是否有一种方法可以在构建自定义UIImageView时以编程方式执行此操作,然后才能在屏幕上显示任何内容。
我对C#或Objective-C中的答案感到满意。
答案 0 :(得分:4)
好吧,我可以帮助您使用UIKit / Objective-C方法。至于.NET,我没有最模糊的。 UIKit有一些用于以编程方式生成UIImages的有用功能。您需要做的事情如下:
- (UIImage*)generateImage {
UIGraphicsBeginImageContext(someCGSize);
CGContextRef ctx = UIGraphicsGetCurrentContext();
// Draw whatever you want here with ctx, just like an overridden drawRect.
UIImage* generatedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return generatedImage;
}
请确保从主线程调用此类方法。这是我能想到的唯一警告。
[编辑] C#/ MonoTouch版本是:
UIImage GenerateImage ()
{
UIGraphics.BeginImageContext (new RectangleF (0, 0, 100, 100));
var ctx = UIGraphics.GetCurrentContext ();
// Draw into the ctx anything you want.
var image = UIGraphics.GetImageFromCurrentImageContext ();
UIGraphics.EndImageContext ();
return image;
}