Как реализовать службу зависимостей для наложения камеры в Xamarin.Forms с помощью Media Plugin?

Я пытаюсь передать функцию наложения камеры в качестве службы зависимостей в свой общий код с помощью Media Plugin для Xamarin https://github.com/jamesmontemagno/MediaPlugin.

Я не могу понять, как правильно реализовать службу зависимостей. Приложение работает, но когда я открываю камеру, оно не отображает оверлей. Если бы кто-то мог помочь мне с моим кодом или привести пример использования опции наложения, я был бы очень признателен.

Мой код интерфейса:

public interface IPhotoOverlay 
{
   object GetImageOverlayAsync();
}

Мой код iOS:

public object GetImageOverlayAsync()
    {
        Func<object> func = CreateOverlay;

        return func;
    }

    public object CreateOverlay()
    {
        var imageView = new UIImageView(UIImage.FromBundle("face-template.png"));
        imageView.ContentMode = UIViewContentMode.ScaleAspectFit;

        var screen = UIScreen.MainScreen.Bounds;
        imageView.Frame = screen;

        return imageView;
    }

Мой общий код:

var photo = await Plugin.Media.CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions() {
            OverlayViewProvider = DependencyService.Get<IPhotoOverlay>().GetImageOverlayAsync,
            DefaultCamera = Plugin.Media.Abstractions.CameraDevice.Front});

1 ответ

Решение

В вашей службе Xamarin.iOS вам нужно зарегистрировать зависимость, вот пример.

[assembly: Dependency (typeof (PhotoOverlayiOS))]
namespace UsingDependencyService.iOS
{
    public class PhotoOverlayiOS : IPhotoOverlay
    {

        public object GetImageOverlayAsync()
        {
            Func<object> func = CreateOverlay;

            return func;
        }

        public object CreateOverlay()
        {
            var imageView = new UIImageView(UIImage.FromBundle("face-template.png"));
            imageView.ContentMode = UIViewContentMode.ScaleAspectFit;

            var screen = UIScreen.MainScreen.Bounds;
            imageView.Frame = screen;

            return imageView;
        }  
    }
}
Другие вопросы по тегам