UIButton 在相机流中不可见 (Xamarin.iOS)
Posted
技术标签:
【中文标题】UIButton 在相机流中不可见 (Xamarin.iOS)【英文标题】:UIButton are not visible over camera stream (Xamarin.iOS) 【发布时间】:2017-10-25 09:41:24 【问题描述】:我制作了一个 Xamarin.ios 应用,其中有一个摄像头流。 在我的故事板中,我有一个 UIButton 用来拍照,一个用来切换相机。
但是当我启动我的应用程序时,按钮位于摄像头流下方。
有人知道如何将按钮放在相机流上吗?
这是我的代码
public override void ViewDidLoad()
base.ViewDidLoad();
liveCameraStream = PhotoView;
SetupLiveCameraStream();
public void SetupLiveCameraStream()
captureSession = new AVCaptureSession();
var viewLayer = liveCameraStream.Layer;
var videoPreviewLayer = new AVCaptureVideoPreviewLayer(captureSession)
Frame = liveCameraStream.Bounds
;
liveCameraStream.Layer.AddSublayer(videoPreviewLayer);
var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
ConfigureCameraForDevice(captureDevice);
captureDeviceInput = AVCaptureDeviceInput.FromDevice(captureDevice);
var dictionary = new NSMutableDictionary();
dictionary[AVVideo.CodecKey] = new NSNumber((int)AVVideoCodec.JPEG);
stillImageOutput = new AVCaptureStillImageOutput()
OutputSettings = new NSDictionary()
;
captureSession.AddOutput(stillImageOutput);
captureSession.AddInput(captureDeviceInput);
captureSession.StartRunning();
在这里您可以看到带有按钮的故事板
【问题讨论】:
【参考方案1】:这里liveCameraStream
视图悬停在按钮上方,因此我们必须将其发送回视图层次结构,以便可以查看按钮。
以下任何一项都应该适合您:
// 1
UIView cameraView = new UIView(videoPreviewLayer.Frame);
cameraView.Layer.AddSublayer(videoPreviewLayer);
View.AddSubview(cameraView);
View.SendSubviewToBack(cameraView);
-------OR-------
// 2
liveCameraStream.Layer.AddSublayer(videoPreviewLayer);
View.SendSubviewToBack(liveCameraStream);
用上面的代码行替换下面的行:
liveCameraStream.Layer.AddSublayer(videoPreviewLayer);
编辑:
第二个选项适用于这篇文章。
【讨论】:
很高兴看到它成功了!!你能告诉我这两个选项中哪个选项有效吗? 第二个选项以上是关于UIButton 在相机流中不可见 (Xamarin.iOS)的主要内容,如果未能解决你的问题,请参考以下文章
UIButton 在 UIPopoverController 中不起作用