Я использую UIGraphicsPushContext для отправки контекста внутрь drawRect следующим образом:
- (void)drawRect:(CGRect)rect {
// Create Bitmap Graphics Context
UIContextRef ctxt = //blah blah;
// Push the custom context in the graphics stack
UIGraphicsPushContext(ctxt);
// Draw Stuff
// Get Image from custom context
}
Моя проблема в том, что изображение не отображается на экране (в представлении), но я могу подтвердить, что успешно нарисовал контекст, поскольку изображение, полученное из контекста, показывает изображение, похожее на то, что я намеревался нарисовать.
Чего я хотел добиться, так это заменить мой вызов UIGraphicsGetCurrentContext() (который работает и показывает изображение) и использовать (push) пользовательский контекст, который я могу использовать.
Я что-то упустил здесь? Спасибо!
Ответ 1 · loomer
Если вы хотите нарисовать изображение, а затем также показать его в представлении, вам нужно либо нарисовать его в представлении, а затем также изображение, либо сначала нарисовать изображение, а затем нарисовать это изображение в представлении. Чтобы реализовать второй вариант, сделайте что-то вроде этого:
- (void)drawRect:(CGRect)rect {
// Create image
UIGraphicsBeginImageContext(rect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
// Draw the image content using ctx
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Draw image on view
[image drawAtPoint:CGPointZero];
}
Ответ 2 · youshunei
Я думаю, вы пропустите это:
- (void)drawRect:(CGRect)rect {
// Create Bitmap Graphics Context
UIContextRef ctxt = //blah blah;
// Push the custom context in the graphics stack
UIGraphicsPushContext(ctxt);
// Draw Stuff
// Get Image from custom context
//blah blah
UIGraphicsPopContext();
}
использование UIGraphicsPopContext() для восстановления предыдущего контекста