Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 渲染到上下文中的视图将导致空图像_C#_Ios_Uiview_Xamarin - Fatal编程技术网

C# 渲染到上下文中的视图将导致空图像

C# 渲染到上下文中的视图将导致空图像,c#,ios,uiview,xamarin,C#,Ios,Uiview,Xamarin,我正在尝试创建视图的位图副本,以将其用作拖放操作的拖曳阴影。 我使用了这里描述的技术: (若要在视图中渲染实体填充,也会导致空图像) 但是结果总是一个透明/空的图像(我选中了它不是nil/null) 我试图复制的视图包含(透明)SVG 这是我的密码: // always results in an fully transparent/empty image private UIView CreateDragShadow(UIView view) {

我正在尝试创建视图的位图副本,以将其用作拖放操作的拖曳阴影。

我使用了这里描述的技术:

(若要在视图中渲染实体填充,也会导致空图像)

但是结果总是一个透明/空的图像(我选中了它不是nil/null)

我试图复制的视图包含(透明)SVG

这是我的密码:


    // always results in an fully transparent/empty image
    private UIView CreateDragShadow(UIView view)
    {
        UIGraphics.BeginImageContextWithOptions(view.Bounds.Size, false, 0.0f);
        CGContext context = UIGraphics.GetCurrentContext();
        //view.DrawViewHierarchy(view.Bounds, true);    // "old" way
        view.Layer.RenderInContext(context);            // recommended way

        UIImage image = UIGraphics.GetImageFromCurrentImageContext();

        UIGraphics.EndImageContext();

        UIImageView dropShadow = new UIImageView();
        dropShadow.Image = image;

        return dropShadow;
    }

我还编写了一个小测试函数,以查看视图是否正确添加到superview,它可以正常工作并正确生成一个白色UIView,上面写着“Drag shadow”:


    // this produces a white drag shadow image with "Drag shadow" written on it
    private UIView CreateDragShadowTest(UIView view)
    {
        // test with a simple UITextView to see if the approach works
        UITextView viewTestShadow = new UITextView(view.Frame);
        viewTestShadow.Bounds = view.Bounds;
        viewTestShadow.Text = "Drag shadow";

        return viewTestShadow;
    }

有人知道发生了什么事吗

我也愿意接受完全不同的方法


致以最良好的祝愿

我在Xamarin文档页面上找到了一个答案,在搜索时,我在其他地方找不到这个答案

新守则是:


    private UIView CreateDragShadow(UIView view)
    {                
        UIView dropShadow = view.SnapshotView(true);
        return dropShadow;
    }

它公开SnapshotViewAfterScreenuUpdate(可在此处找到:)并方便地生成UIView快照

这个解决方案对我很有效,但如果有人知道的话,我仍然想知道我在其他方法上做错了什么