Как создать изображение при построении UIImageView - PullRequest
3 голосов
/ 10 апреля 2011

У меня есть собственный UIImageView, и при его создании я хотел бы создать в памяти или кэшировать изображение iDevice, представляющее собой заполненный прямоугольник определенного цвета, а затем установить его в свойстве Image объекта UIImageView.

Я знаю, как нарисовать это на UIImage, переопределив метод Draw, и он просто нарисовал бы текущий CGContext.Однако, поскольку я хочу сделать это во время создания UIImageView, на самом деле у меня нет контекста, на котором я могу рисовать или чего-либо еще, поскольку он еще не виден.

Проще говоря, мне интересно, есть ли способ сделать это программно при создании пользовательского UIImageView, когда приложение запускается до того, как что-либо отображается на экране.

Я согласен с ответами вC # или Objective-C.

1 Ответ

4 голосов
/ 11 апреля 2011

Ну, я могу помочь вам с подходом 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;
}
...