【发布时间】:2019-02-22 23:28:23
【问题描述】:
我正在尝试将 UIBarButtonSystemItem like UIBarButtonSystemItem.Camera 类型的图标转换为 UIImage。 用户可以在 Swift and ObjC 中做到这一点,但我无法弄清楚。
当我按照 Swift 和 ObjC 教程中的说明进行操作时,我的代码中出现空引用异常错误
{
UIImage image = null;
viewController.InvokeOnMainThread(() =>
{
UIBarButtonItem oldItem = viewController.NavigationItem.RightBarButtonItem;
var buttonItem = new UIBarButtonItem(item);
// Add to toolbar and render it
viewController.NavigationItem.RightBarButtonItem = buttonItem;
var x = new ObjCRuntime.Selector("view");
var y = viewController.NavigationItem.RightBarButtonItem.PerformSelector(x);
UIView itemView = (UIView)y;
// Get the image from real UIButton
foreach (var view in itemView.Subviews)
{
if (view.GetType() == typeof(UIButton))
image = ((UIButton)view).ImageView.Image;
}
viewController.NavigationItem.RightBarButtonItem = oldItem;
});
return image;
}
我也试过了,
public static UIImage ToUIImage2(UIBarButtonSystemItem item, UIViewController viewController)
{
UIImage image = null;
viewController.InvokeOnMainThread(() =>
{
var buttonItem = new UIBarButtonItem(item);
// Add to toolbar and render it
var tempItem = new UIBarButtonItem[1] { buttonItem };
var bar = new UIToolbar();
bar.SetItems(tempItem, false);
bar.SnapshotView(true);
// Get the image from real UIButton
var buttonItemView = bar.ValueForKey(new Foundation.NSString("view"));
var itemView = (UIView)buttonItemView;
foreach (var view in itemView.Subviews)
{
if (view.GetType() == typeof(UIButton))
image = ((UIButton)view).ImageView.Image;
}
});
return image;
}
在 StackOverflow 中找不到 C# 的任何内容。 以前有人试过吗?
【问题讨论】:
-
“我遇到了错误” - 你遇到了什么错误?并请在正文中发布相关代码,不要只链接到场外资源
-
嘿杰森!谢谢你们的cmets!我根据您的建议更新了我的问题,在这两种情况下我都得到了一个空引用异常
标签: c# ios xamarin xamarin.ios