如何在构建UIImageView时创建Image

时间:2011-04-10 18:24:18

标签: c# objective-c ios uiimageview xamarin.ios

我有一个自定义UIImageView,当它构造时,我想创建一个内存或缓存到iDevice Image,它是一个特定颜色的Filled Rectangle,然后将其设置为UIImageView的Image属性。

我知道如何通过覆盖Draw方法在UIImage上绘制它,它只会绘制当前的CGContext。但是,因为我想在构建UIImageView时这样做,所以我实际上没有可以绘制的上下文或任何东西,因为它还不可见。

简单地说,我想知道在应用程序启动之前是否有一种方法可以在构建自定义UIImageView时以编程方式执行此操作,然后才能在屏幕上显示任何内容。

我对C#或Objective-C中的答案感到满意。

1 个答案:

答案 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;
}