我有一段使用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;
}

谢谢

推荐答案

现在您应该使用UIGraphicsImageRendererAPI来绘制图像.

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

Ios相关问答推荐

从后台线程调用DispatchObject的方法安全吗?

如何在iOS 17中拦截UITextView中的链接点击?UITextItemInteraction已弃用

XcodeCloud生成失败,返回";ci_pre_xcodeBuild.sh是可执行文件,但退出时返回2个退出代码.";

Flutter iOS 键盘问题:. TextInputType.number 中缺少字符

swiftui动画如何实时确定不对称过渡

Strange UIView.animate更改UIButton标题 colored颜色 的行为

ITMS-90432:将应用上传到应用store 时出现问题

为什么常量属性可能在 Swift 类中被初始化两次?

Swift Combine 防止初始值触发接收器并同时防止重复?

Apollo iOS 客户端代码生成:错误:无法查询字段

如何在Collection 后更改并保留按钮 colored颜色 ,然后在 SwiftUI 中切换回来?

我可以在 Apple-Watch 上使用 iPhone 的摄像头扫描 SwiftUi 中的二维码(例如用于登录)吗

SwiftUI 文本字段代理绑定代码忽略空格不起作用?

Xcode - 错误 ITMS-90635 - Bundle 包中的 Mach-O 无效 - 提交到 App Store

检测 iPhone/iPad/iPod touch 的 colored颜色 ?

SwiftUI 视图 - viewDidLoad()?

以编程方式获取故事板 ID?

Xcode 11 向后兼容性:UIWindowScene 仅在 iOS 13 或更高版本中可用

如何使用 presentModalViewController 创建透明视图

dismissModalViewController 并传回数据