Beispiel #1
0
            public override async void DidFinishPicking(PHPickerViewController picker, PHPickerResult[] results)
            {
                if (results.Length == 0)
                {
                    _photoPicker._taskCompletionSource.SetResult(null);
                    _photoPicker._viewController.DismissModalViewController(true);
                    return;
                }

                var item1      = results.ElementAt(0).ItemProvider;
                var identifier = item1.RegisteredTypeIdentifiers.First();
                var data1      = await item1.LoadDataRepresentationAsync(identifier);

                var bytes1 = data1.ToArray();

                byte[] bytes2 = null;
                if (results.Length == 2)
                {
                    var data2 = await results.ElementAt(1).ItemProvider.LoadDataRepresentationAsync(identifier);

                    bytes2 = data2.ToArray();
                }

                _photoPicker._taskCompletionSource.SetResult(new[] { bytes1, bytes2 });
                _photoPicker._viewController.DismissModalViewController(true);
            }
            public override async void DidFinishPicking(PHPickerViewController picker, PHPickerResult[] results)
            {
                picker.DismissViewController(true, null);
                Console.WriteLine("PHPickerViewController finished picking image");

                foreach (var result in results)
                {
                    if (result.ItemProvider.CanLoadObject(typeof(UIImage)))
                    {
                        var image = await result.ItemProvider.LoadObjectAsync <UIImage>();

                        BeginInvokeOnMainThread(() => imageView.Image = image);
                        await Task.Delay(1000);
                    }
                }
            }
        partial void ShowPHImagePicker(NSObject sender)
        {
            var config = new PHPickerConfiguration
            {
                Filter         = PHPickerFilter.ImagesFilter,
                SelectionLimit = 0
            };

            var picker = new PHPickerViewController(config)
            {
                ModalPresentationStyle = UIModalPresentationStyle.Popover,
                Delegate = new PickerDelegate(imagePreview)
            };

            var popPC = picker.PopoverPresentationController;

            popPC.PermittedArrowDirections = UIPopoverArrowDirection.Any;
            popPC.SourceView = uiImagePickerButton;
            popPC.SourceRect = uiImagePickerButton.Bounds;

            ShowViewController(picker, this);
        }
Beispiel #4
0
        public Task <byte[][]> GetImages()
        {
            var window = UIApplication.SharedApplication.KeyWindow;

            _viewController = window.RootViewController;

            if (UIDevice.CurrentDevice.CheckSystemVersion(14, 0))
            {
                var phPicker = new PHPickerViewController(new PHPickerConfiguration
                {
                    Filter         = PHPickerFilter.ImagesFilter,
                    SelectionLimit = 2
                })
                {
                    Delegate = new PHPickerDelegate(this)
                };

                _viewController.PresentModalViewController(phPicker, true);
            }
            else
            {
                _imagePicker = new UIImagePickerController
                {
                    SourceType = UIImagePickerControllerSourceType.PhotoLibrary,
                    MediaTypes = UIImagePickerController.AvailableMediaTypes(UIImagePickerControllerSourceType.PhotoLibrary)
                };

                _imagePicker.FinishedPickingMedia += OnImagePickerFinishedPickingMedia;
                _imagePicker.Canceled             += OnImagePickerCancelled;

                _viewController.PresentModalViewController(_imagePicker, true);
            }

            _taskCompletionSource = new TaskCompletionSource <byte[][]>();
            return(_taskCompletionSource.Task);
        }