Как реализовать службу зависимостей для наложения камеры в 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;
}
}
}