I am trying to convert icons from type UIBarButtonSystemItem like UIBarButtonSystemItem.Camera into a UIImage. Users were able to do it in Swift and ObjC , but I'm not able to figure it out.
When I follow the instructions from Swift & ObjC tutorials, I am getting null reference exception errors in my code
{
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;
}
And I tried this too,
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;
}
Can't find anything for C# in StackOverflow. Has anyone tried to do it before?