我正在尝试使用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});
答案 0 :(得分: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;
}
}
}