【发布时间】:2019-06-18 14:32:04
【问题描述】:
我正在尝试使用 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});
【问题讨论】:
-
你是否在你iOS项目的AppDelegeate的FinishedLaunching方法中将你的PhotoOverlay服务注册到你的IPhotoOverlay服务中了?
-
不,我没有,我该怎么做呢?在 Xamarin 文档中找到的示例中,我没有在 AppDelegate 中看到注册。
-
我刚刚尝试添加 Xamarin.Forms.DependencyService.Register
();这对我不起作用。如何准确注册? -
在你完成的启动方法中添加这一行:DependencyService.Register
();这是假设您的 ios 服务称为 PhotoOverlay。你也可以通过类上面的属性注册一个依赖
标签: c# .net xamarin.forms camera-overlay