一堆UIGraphics方法在iOS 17中被弃用,没有明确的替代品?

ddhy6vgd  于 2023-11-19  发布在  iOS
关注(0)|答案(1)|浏览(177)

我有一段代码,我使用UIGraphics方法,似乎我使用的三个方法都被弃用了。
这是一段Xamarin.iOS代码,但我相信Swift用户也可以在这里提供帮助,有人能帮助我了解这些方法的新方法吗?我正在尝试谷歌这个,但我似乎没有得到任何直接的线索来代替这些方法。
以下三种方法已被弃用;

UIGraphics.BeginImageContextWithOptions(size, false, ScreenDensity);
    var image = UIGraphics.GetImageFromCurrentImageContext();
    UIGraphics.EndImageContext();

字符串
完整的代码如下,不确定这是否有帮助。

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


谢谢

pw9qyyiw

pw9qyyiw1#

您现在应该使用UIGraphicsImageRenderer API来绘制图像。

var renderer = new UIGraphicsImageRenderer(size, new UIGraphicsImageRendererFormat {
    Opaque = false,
    Scale = ScreenDensity
});

字符串
你应该传入一个Action<UIGraphicsImageRendererContext>CreateImage来绘制你的图像。图像将由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...
});

相关问题