我想从图库中加载图像并将其显示在 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-推荐答案 strong>
看来你没有使用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/
|