I have a piece of code where I use the UIGraphics methods and it seems that the three methods that I was using are all deprecated.
This is a piece of Xamarin.iOS code but I am sure Swift users can help here too, can anyone help me out with what the new methods for these are I am trying to google for this but I don't seem to be getting any straight clues as to what replacement is for these methods.
The following three methods have been deprecated;
UIGraphics.BeginImageContextWithOptions(size, false, ScreenDensity);
var image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
The full piece of code is as follows, not sure if this helps though...
private UIImage CreateBufferImage()
{
if (paths is null || paths.Count == 0)
{
return null;
}
var size = Bounds.Size;
UIGraphics.BeginImageContextWithOptions(size, false, ScreenDensity);
var context = UIGraphics.GetCurrentContext();
context.SetLineCap(CGLineCap.Round);
context.SetLineJoin(CGLineJoin.Round);
foreach (var path in paths)
{
context.SetStrokeColor(path.Color.CGColor);
context.SetLineWidth(path.Width);
context.AddPath(path.Path.CGPath);
context.StrokePath();
path.IsDirty = false;
}
var image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
return image;
}
Thanks
You should now use the UIGraphicsImageRenderer
API to draw images.
var renderer = new UIGraphicsImageRenderer(size, new UIGraphicsImageRendererFormat {
Opaque = false,
Scale = ScreenDensity
});
You should pass in an Action<UIGraphicsImageRendererContext>
to CreateImage
to draw your image. The image will be returned by CreateImage
.
var image = renderer.CreateImage(imageContext => {
// if you want a CGContext, you can get that from the CGContext property
var cgcontext = imageContext.CGContext;
// drawing code here...
});