• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何从 Xamarin.ios 中的图库中选择图像

[复制链接]
菜鸟教程小白 发表于 2022-12-12 11:45:14 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想从图库中加载图像并将其显示在 UIImageView 上。

我尝试像 Xamarin 食谱中的示例那样做,但我得到的只是空值。

https://developer.xamarin.com/recipes/ios/media/video_and_photos/choose_a_photo_from_the_gallery/

到目前为止我的代码:

public partial class ViewController : UIViewController
    {
    UIImagePickerController imagePicker;
    UIButton choosePhotoButton;
UIImageView imageView;

public ViewController(IntPtr handle) : base(handle)
{
}

public ViewController()
{
}

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    Title = "Wähle Bild aus:";
    View.BackgroundColor = UIColor.White;

    imageView = new UIImageView(new CGRect(10, 150, 300, 300));
    Add(imageView);

    choosePhotoButton = UIButton.FromType(UIButtonType.RoundedRect);
    choosePhotoButton.Frame = new CGRect(10, 80, 100, 40);
    choosePhotoButton.SetTitle("icker", UIControlState.Normal);
    choosePhotoButton.TouchUpInside += (s, e) =>
    {
        imagePicker = new UIImagePickerController();

        imagePicker.SourceType = UIImagePickerControllerSourceType.PhotoLibrary;
        imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes(UIImagePickerControllerSourceType.PhotoLibrary);

        imagePicker.FinishedPickingMedia += Handle_FinishedPickingMedia;
        imagePicker.Canceled += Handle_Canceled;

        NavigationController.PresentModalViewController(imagePicker, true);

    };

    View.Add(choosePhotoButton);

}


private void Handle_Canceled(object sender, EventArgs e)
{
    imagePicker.DismissModalViewController(true);
}

protected void Handle_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)
{
    bool isImage = false;
    switch (e.Info[UIImagePickerController.MediaType].ToString())
    {
        case "public.image":
            Console.WriteLine("Image selected");
            isImage = true;
            break;
        case "public.video":
            Console.WriteLine("Video selected");
            break;
    }

    // get common info (shared between images and video)
    NSUrl referenceURL = e.Info[new NSString("UIImagePickerControllerReferenceUrl")] as NSUrl;
    if (referenceURL != null)
        Console.WriteLine("Url:" + referenceURL.ToString());

    // if it was an image, get the other image info
    if (isImage)
    {
        // get the original image
        UIImage originalImage = e.Info[UIImagePickerController.OriginalImage] as UIImage;
        if (originalImage != null)
        {
            // do something with the image
            imageView.Image = originalImage; // display
        }

        UIImage editedImage = e.Info[UIImagePickerController.EditedImage] as UIImage;
        if (editedImage != null)
        {
            // do something with the image
            Console.WriteLine("got the edited image");
            imageView.Image = editedImage;
        }
    } 

    // dismiss the picker
    imagePicker.DismissModalViewController(true);
}

我在这一行得到空值: NavigationController.PresentModalViewController(imagePicker, true);

我做错了什么?



Best Answer-推荐答案


看来你没有使用UINavigationController,所以改一下:

NavigationController.PresentModalViewController(imagePicker, true);

收件人:

PresentModalViewController(imagePicker, true);

注意:PresentModalViewController 自 ios6 起已弃用,因此您可以更改代码以使用:

PresentViewControllerAsync(imagePicker, true);

或者:

PresentViewController(imagePicker, true, () => {
});

关于ios - 如何从 Xamarin.ios 中的图库中选择图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38476030/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap