首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在单击按钮时从图库中选择图像(Xamarin iOS)

如何在单击按钮时从图库中选择图像(Xamarin iOS)
EN

Stack Overflow用户
提问于 2017-01-13 06:04:21
回答 1查看 811关注 0票数 0

我看了一下这段代码:https://developer.xamarin.com/recipes/ios/media/video_and_photos/choose_a_photo_from_the_gallery/不幸的是,这会立即加载图库,并且没有考虑到让用户先选择的选项。

我尝试为用户提供两个选项:

1-拍摄照片2-从图库中选择现有照片

这两个按钮都是你点击的按钮。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-01-13 06:57:08

一种方法是显示一个带有Prism.IPageDialogService的ActionSheet,为用户提供选择。您甚至可以这样做,以获得跨平台的解决方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private async void AddImage() // This is your method for your button
{
    string chosen = await _dialogService.DisplayActionSheetAsync("Which source do you want to use?", "Cancel", null, "Camera", "Galery");
    if (chosen == "Camera")
    {
        TakePhoto();
    }
    else if (chosen == "Galery")
    {
        PickPhoto();
    }
}

TakePhoto()的实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private async void TakePhoto()
{
    await CrossMedia.Current.Initialize();

    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
    {
        await _dialogService.DisplayAlertAsync("Warning", "Camera not available", "OK");
        return;
    }

    _mediaFile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
    {
        SaveToAlbum = true,
        Directory = "Sample",
        Name = "sample" + DateTime.Now.ToLocalTime().ToString("yyyyMMddHHmmss") + ".jpg"
    });

    if (_mediaFile == null)
    {
        return;
    }

    ImageButtonAddGroup = _mediaFile.Path;
}

PickPhoto()的实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private async void PickPhoto()
{
    await CrossMedia.Current.Initialize();

    if (!CrossMedia.Current.IsPickPhotoSupported)
    {
        await _dialogService.DisplayAlertAsync("Warning", "Camera not available", "OK");
        return;
    }

    _mediaFile = await CrossMedia.Current.PickPhotoAsync();
    if (_mediaFile == null)
    {
        return;
    }
    ImageButtonAddGroup = _mediaFile.Path;
}

如果您想要两个按钮而不是一个按钮,则不需要Prism.IPageDialogService,只需将TakePhoto()PickPhoto()方法绑定到两个不同的按钮即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41628319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文