C# 渲染到上下文中的视图将导致空图像
我正在尝试创建视图的位图副本,以将其用作拖放操作的拖曳阴影。 我使用了这里描述的技术: (若要在视图中渲染实体填充,也会导致空图像) 但是结果总是一个透明/空的图像(我选中了它不是nil/null) 我试图复制的视图包含(透明)SVG 这是我的密码: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) {
// 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快照
这个解决方案对我很有效,但如果有人知道的话,我仍然想知道我在其他方法上做错了什么