将iOS原生相机应用程序借入我自己的应用程序

时间:2016-10-05 08:53:49

标签: ios iphone swift ios-camera

我想创建一个可以扩展相机使用的自定义iOS相机应用。首先,我想的是"借用"或者将原生UI相机应用的所有功能和iOS集成到我自己的应用中,这意味着当我使用我的应用拍照时,UI将完全相同当我打开相机应用程序时,我可以用它在拍摄图片,录制视频,拍摄正方形,panos,SLO-MO 之间进行切换......你可以命名。

我们有什么方法可以做到这一点?是否有任何api或库或任何导入我可以用来注入我的代码?有关 iOS相机应用的精彩教程?

Swift新手。感谢每个人!

Ps: Image is just used to clarify... borrowed from Apple

1 个答案:

答案 0 :(得分:2)

您所描述的是使用UIImagePickerController,遗憾的是,当您使用Apple提供的此组件时,只要提供相机视图控制器,您就无意修改行为。 提供此API是为了将相机功能轻松集成到您的应用中。

如果您想自定义界面并制作新功能,您必须使用Apple在Window { visible: true width: 640 height: 480 property var totalZoneList: ["total1", "total2"] property var moduleZoneList: ["module1", "module2"] Repeater{ id: iRepeater model: ListModel { id: myModel function createModel() { for(var i = 0; i < totalZoneList.length; i++) { for (var j = 0; j < moduleZoneList.length; j++) { myModel.append({"item1": totalZoneList[i], "item2": moduleZoneList[j]}) } } } Component.onCompleted: {createModel()} } delegate: myblocks } Component { id: myblocks Rectangle { id: box color: { switch(index){ case 0: selected ? "red" : "#FF9999";break; case 1: selected ? "blue" : "lightblue";break; case 2: selected ? "green" : "lightgreen";break; case 3: selected ? "grey" : "lightgrey";break; } } x: (width + 5)*index width: 20 height: 20 property int offsetX:0 property int offsetY:0 property bool selected: false function setRelative(pressedRect){ disableDrag(); x = Qt.binding(function (){ return pressedRect.x + offsetX; }) y = Qt.binding(function (){ return pressedRect.y + offsetY; }) } function enableDrag(){ gridArea.drag.target = box } function disableDrag(){ gridArea.drag.target = null } MouseArea { id: gridArea anchors.fill: parent hoverEnabled: true drag.axis: Drag.XandYAxis onClicked: parent.selected=!parent.selected onPressed: { var pressedRect = iRepeater.itemAt(index); if (pressedRect.selected == true){ for (var i=0; i<iRepeater.count; i++ ){ var rect = iRepeater.itemAt(i); if (i != index){ //init for breaking existing binding rect.x = rect.x rect.y = rect.y rect.disableDrag() if (rect.selected == true){ rect.offsetX = rect.x - pressedRect.x rect.offsetY = rect.y - pressedRect.y rect.setRelative(pressedRect) } } } pressedRect.enableDrag() } } } // Mousearea } // Rectangle } // Component } 文档中所述的AV Foundation框架自行制作。

  

要执行完全自定义的图像或电影捕获,请使用静态和视频媒体捕获中所述的AV Foundation框架。从iOS 4.0开始,可以使用AV Foundation框架进行摄像头访问。