我想创建一个可以扩展相机使用的自定义iOS
相机应用。首先,我想的是"借用"或者将原生UI
相机应用的所有功能和iOS
集成到我自己的应用中,这意味着当我使用我的应用拍照时,UI
将完全相同当我打开相机应用程序时,我可以用它在拍摄图片,录制视频,拍摄正方形,panos,SLO-MO 之间进行切换......你可以命名。
我们有什么方法可以做到这一点?是否有任何api或库或任何导入我可以用来注入我的代码?有关 iOS
相机应用的精彩教程?
Swift
新手。感谢每个人!
答案 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框架进行摄像头访问。