
Swiftycam es un marco de cámara iOS de estilo iOS simple, al estilo Snapchat, para una fácil captura de fotos y videos. Swiftycam permite a los usuarios capturar fotos y videos de la misma sesión con muy poca configuración.
La configuración de un controlador de vista de cámara en Avfoundation puede ser tedioso y lento. Swiftycam es un controlador de caída en la vista que proporciona un control completo de la Avsession.
| Swiftycam | |
|---|---|
| Captura de medios de estilo Snapchat | |
| Apoyo a iOS8+ | |
| Captura de imágenes | |
| Captura de video | |
| Configuración de calidad de imagen manual | |
| Soporte de la cámara delantera y trasera | |
| Flash delantero y trasero | |
| Soporte de Retina Flash | |
| Admite zoom manual | |
| Admite el enfoque manual | |
| Configuración de baja luz | |
| Soporte de audio de fondo |
Swiftycam está disponible bajo la licencia BSD. Consulte el archivo de licencia para obtener más información.
Swiftycam está disponible a través de Cocoapods. Para instalarlo, simplemente agregue la siguiente línea a su Podfile:
pod "SwiftyCam" Agregue esto a Cartfile
github "Awalz/SwiftyCam" ~> 2.2.1
$ carthage update SwiftyCam
Simplemente copie el contenido de la carpeta fuente en su proyecto.
Usar Swiftycam es muy simple.
A partir de iOS 10, Apple requiere el aditon de las cadenas NSCameraUsageDescription y NSMicrophoneUsageDescription a la información de su aplicación. Ejemplo:
< key >NSCameraUsageDescription</ key >
< string >To Take Photos and Video</ string >
< key >NSMicrophoneUsageDescription</ key >
< string >To Record Audio With Video</ string >Si instala SwiftyCam de Cocoapods, asegúrese de importar el módulo a su controlador de vista:
import SwiftyCam Swiftycam es un marco de conveniencia. Para crear una instancia de cámara, cree una nueva subclase UIViewController. Reemplace la declaración de subclase UIViewController con SwiftyCamViewController :
class MyCameraViewController : SwiftyCamViewControllerEso es todo lo que se requiere para configurar la AvSession para la captura de fotos y videos. Swiftycam le pedirá al usuario que permita usar la cámara/micrófono y configurar las entradas y salidas del dispositivo.
Swiftycam viene con un método muy conveniente para capturar medios. Swiftycambutton captura fotos con un UITapGestureRecognizer y captura videos con un UILongPressGestureRecognizer
Para usar un swiftycambutton, simplemente cree uno y asigne el delegado a su swiftycamViewController:
let captureButton = SwiftyCamButton ( frame : buttonFrame )
captureButton . delegate = self Capturar medios con Swiftycam es muy simple. Para capturar una foto, simplemente llame a la función takePhoto :
takePhoto ( ) Capturar video es igual de fácil. Para comenzar a grabar video, llame a la función startVideoRecording :
startVideoRecording ( ) Para finalizar la captura de un video, llame a la función stopVideoRecording :
stopVideoRecording ( ) Para adquirir las fotos y videos tomados por Swiftycambutton o manualmente, debe implementar SwiftyCamViewControllerDelegate y establecer el cameraDelegate en su instancia de controlador de vista:
class MyCameraViewController : SwiftyCamViewController , SwiftyCamViewControllerDelegate {
override func viewDidLoad ( ) {
super . viewDidLoad ( )
cameraDelegate = self
}
...
} func swiftyCam ( _ swiftyCam : SwiftyCamViewController , didTake photo : UIImage ) {
// Called when takePhoto() is called or if a SwiftyCamButton initiates a tap gesture
// Returns a UIImage captured from the current session
}
func swiftyCam ( _ swiftyCam : SwiftyCamViewController , didBeginRecordingVideo camera : SwiftyCamViewController . CameraSelection ) {
// Called when startVideoRecording() is called
// Called if a SwiftyCamButton begins a long press gesture
}
func swiftyCam ( _ swiftyCam : SwiftyCamViewController , didFinishRecordingVideo camera : SwiftyCamViewController . CameraSelection ) {
// Called when stopVideoRecording() is called
// Called if a SwiftyCamButton ends a long press gesture
}
func swiftyCam ( _ swiftyCam : SwiftyCamViewController , didFinishProcessVideoAt url : URL ) {
// Called when stopVideoRecording() is called and the video is finished processing
// Returns a URL in the temporary directory where video is stored
}
func swiftyCam ( _ swiftyCam : SwiftyCamViewController , didFocusAtPoint point : CGPoint ) {
// Called when a user initiates a tap gesture on the preview layer
// Will only be called if tapToFocus = true
// Returns a CGPoint of the tap location on the preview layer
}
func swiftyCam ( _ swiftyCam : SwiftyCamViewController , didChangeZoomLevel zoom : CGFloat ) {
// Called when a user initiates a pinch gesture on the preview layer
// Will only be called if pinchToZoomn = true
// Returns a CGFloat of the current zoom level
}
func swiftyCam ( _ swiftyCam : SwiftyCamViewController , didSwitchCameras camera : SwiftyCamViewController . CameraSelection ) {
// Called when user switches between cameras
// Returns current camera selection
} El flash (antorcha) se puede habilitar cambiando la propiedad flashEnabled :
flashEnabled = trueFlash ahora es compatible con las cámaras frontales y traseras.
Para las fotos, la cámara flasheará muy parecida a la cámara de iOS stock. Para el video, la antorcha (Flash) habilitará la duración de la captura de video.
Para los modelos que admiten Retina Flash, la cámara frontal usará el flash predeterminado para la captura de imágenes. Si no es compatible con Retina Flash, se usa un flash retina falso similar a Snapchat.
Para los videos frontales, se colocará una vista blanca y 85% opaca sobre la alimentación de video durante la captura de video.
Por defecto, SwiftyCam se lanzará a la cámara trasera. Esto se puede cambiar cambiando la propiedad defaultCamera en viewDidLoad :
override func viewDidLoad ( ) {
super . viewDidLoad ( )
defaultCamera = . front
...
}Swiftycam admite la captura de las cámaras frontales y traseras. Para cambiar de cámaras, llame a la función:
switchCamera ( )Toque a enfoque, pellizco a zoom y flash de la cámara no se admiten cuando se selecciona la cámara frontal. El cambio de video mientras se está grabando el video no es compatible actualmente
Swiftycam también permite cambiar entre cámaras con un gesto de doble toque. Para deshabilitar esta función, use la propiedad doubleTapCameraSwitch :
doubleTapCameraSwitch = falseSwiftycam tiene varias opciones para configurar la funcionalidad de la captura:
La calidad del video se puede establecer mediante la propiedad de videojalidad de SwiftyCamViewController. Las opciones disponibles corresponden a la AvCaptureSessionPreset coincidente:
| Videojalidad | AvCapturesessionPreset |
|---|---|
.high | AvCapturePresethigh |
.medium | AvCapturePresetMedium |
.low | AvCapturePresetlow |
.resolution352x288 | AvCapturesessionPreset352x288 |
.resolution640x480 | AvCapturesessionPreset640x480 |
.resolution1280x720 | AvCapturesessionPreset1280x720 |
.resolution1920x1080 | AvCapturesessionPreset1920x1080 |
.resolution3840x2160 | AvCapturesessionPreset3840x2160 |
.iframe960x540 | AvCapturesessionPresetiframe960x540 |
.iframe1280x720 | AvCapturesessionPresetiframe1280x720 |
El valor predeterminado es .High . Para usar con la cámara frontal , siempre se usará.
Si usa un SwiftyCambutton, puede establecer una duración máxima de video para la longitud del video. La grabación de video me detuvo automáticamente una vez que se haya alcanzado el límite de tiempo y se llamará al método delegado SwiftyCamDidFinishRecordingVideo . Para establecer este valor, simplemente cambie el valor maximumVideoDuration :
maximumVideoDuration = 10.0Un valor de 0.0 permitirá una grabación de video ilimitada a través del Swiftycambutton. El valor predeterminado es 0.0 .
Swiftycam admite el zoom digital de la sesión de la cámara a través de los gestos de pellizco y sartén. Los gestos funcionan de manera similar a la aplicación iOS predeterminada y se acercarán al nivel máximo de zoom compatible. El zoom de la cámara solo se admite en la cámara trasera. Avfoundation actualmente no admite el zoom de la cámara frontal. Para deshabilitar esta característica, cambie la propiedad pinchToZoom :
pinchToZoom = false Por defecto, pinchToZoom está habilitado.
Swiftycam también admite la capacidad de acercar la cámara trasera con gestos de sartén verticales. Para deshabilitar esta característica, cambie la propiedad swipeToZoom :
swipeToZoom = false Por defecto, swipeToZoom está habilitado. Los gestos predeterminados se acercan a la sesión de captura con un deslizamiento hacia abajo y se alejan con un deslizamiento hacia arriba. Esto se puede revertir cambiando la propiedad swipeToZoomInverted :
swipeToZoomInverted = true También puede restringir la cantidad que la cámara trasera puede hacer zoom. Para hacer esto, use la propiedad maxZoomScale :
maxZoomScale = 2.0 Por defecto, maxZoomScale está configurado en Infinite . El nivel de zoom máximo real está determinado por el dispositivo VideomaxZoomFactor del dispositivo.
Swiftycam, por defecto, admite toque para centrarse en la vista previa del video. Swiftycam establecerá los niveles de enfoque y exposición de la sesión en el punto de aprovechar. Si bien TAP para establecer la exposición es compatible con ambas cámaras, TAP para enfocar solo se admite en las cámaras traseras. El enfoque automático y la autoexposición se reanudarán una vez que Swiftycam detecta un movimiento significativo desde el punto de extracción. Para deshabilitar esta característica, cambie la propiedad tapToFocus :
tapToFocus = false Por defecto, tapToFocus está habilitado. Si desea mostrar una animación en pantalla cuando se inicia un toque para enfocar, puede usar SwiftyCamDidFocusAtPoint(focusPoint:) para obtener las coordenadas de TAP y proporcionar su propia animación TAP
Por defecto, Swiftycam establecerá la orientación de la foto como retrato. Si desea preservar la orientación de las fotos de captura para permitir el soporte de imágenes de paisajes, use la propiedad shouldUseDeviceOrientation :
shouldUseDeviceOrientation = true Swiftycam tiene la capacidad de permitir que el audio de fondo continúe reproduciendo dentro de la sesión, y para ser capturado por la grabación de video. Por defecto, esto está habilitado. Si desea deshabilitar esta característica, cambie la propiedad de allowBackgroundAudio :
allowBackgroundAudio = false Para los modelos compatibles (iPhone 5 y 5C), AvCapturedEvice admite un impulso de poca luz cuando se detecta que la sesión de captura se encuentra en un área de baja luz. Por defecto, esto se establece en True. Se puede modificar con la variable lowLightBoost :
lowLightBoost = falseCuando un usuario primero se inicia SwiftyCamViewController, se les solicitará permiso para acceder a las cámaras y los micrófonos. De manera predeterminada, si un usuario declina el acceso al hardware, SwiftyCam proporcionará un mensaje a la configuración de privacidad de la aplicación dentro de la aplicación de configuración de iOS.
Otras propiedades:
isCameraFlashOn - BOOLEANisVideoRecording - BOOLEANisSessionRunning - BooleancurrentCamera - CameraSelectionSi tiene alguna pregunta, solicitud o mejoras, no dude en enviar una solicitud de extracción, crear un problema o contactarme en persona:
Andrew Walz [email protected]