
SWIFTYCAM est un cadre de caméra iOS iOS simple de style Snapchat pour une capture photo et vidéo facile. SWIFTYCAM permet aux utilisateurs de capturer à la fois des photos et des vidéos de la même session avec très peu de configuration.
La configuration d'un contrôleur de vue de la caméra dans AvFoundation peut être fastidieuse et longue. SwiftyCam est un contrôleur de vue de la vue qui donne un contrôle complet de l'AvSession.
| Swiftycam | |
|---|---|
| Capture des médias de style Snapchat | |
| Soutien iOS8 + | |
| Capture d'image | |
| Capture vidéo | |
| Paramètres de qualité d'image manuelle | |
| Prise en charge de la caméra avant et arrière | |
| Flash avant et arrière | |
| Support Flash Retina | |
| Prend en charge le zoom manuel | |
| Soutient la focalisation manuelle | |
| Réglage de la lumière basse | |
| Prise en charge de l'audio de fond |
SWIFTYCAM est disponible sous la licence BSD. Voir le fichier de licence pour plus d'informations.
SwiftyCam est disponible via des cocoapodes. Pour l'installer, ajoutez simplement la ligne suivante à votre podfile:
pod "SwiftyCam" Ajoutez ceci à Cartfile
github "Awalz/SwiftyCam" ~> 2.2.1
$ carthage update SwiftyCam
Copiez simplement le contenu du dossier source dans votre projet.
L'utilisation de swiftycam est très simple.
En ce qui concerne iOS 10, Apple nécessite l'additon de la NSCameraUsageDescription et des chaînes NSMicrophoneUsageDescription à l'info.plist de votre application. Exemple:
< key >NSCameraUsageDescription</ key >
< string >To Take Photos and Video</ string >
< key >NSMicrophoneUsageDescription</ key >
< string >To Record Audio With Video</ string >Si vous installez SWIFTYCAM à partir de Cocoapods, assurez-vous d'importer le module dans votre contrôleur de vue:
import SwiftyCam SwiftyCam est un cadre de commodité de rendez-vous. Pour créer une instance de caméra, créez une nouvelle sous-classe UIViewController. Remplacez la déclaration de sous-classe UIViewController par SwiftyCamViewController :
class MyCameraViewController : SwiftyCamViewControllerC'est tout ce qui est nécessaire pour configurer l'avance pour la capture photo et vidéo. SWIFTYCAM invitera l'utilisateur à utiliser la caméra / microphone et configurera à la fois les entrées et sorties de l'appareil.
SWIFTYCAM est livré avec une méthode très pratique de capture des médias. SwiftyCambutton capture des photos avec un UITapGestureRecognizer et capture une vidéo avec une UILongPressGestureRecognizer
Pour utiliser un swiftycambutton, créez-en un simplement et attribuez le délégué à votre swiftycamViewController:
let captureButton = SwiftyCamButton ( frame : buttonFrame )
captureButton . delegate = self Capturer les médias avec swiftycam est très simple. Pour capturer une photo, appelez simplement la fonction takePhoto :
takePhoto ( ) Capturer la vidéo est tout aussi facile. Pour commencer à enregistrer la vidéo, appelez la fonction startVideoRecording :
startVideoRecording ( ) Pour mettre fin à la capture d'une vidéo, appelez la fonction stopVideoRecording :
stopVideoRecording ( ) Afin d'acquérir les photos et vidéos prises par le SwiftyCambutton ou manuellement, vous devez implémenter le SwiftyCamViewControllerDelegate et définir le cameraDelegate sur votre instance de contrôleur View:
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
} Le flash (torche) peut être activé en modifiant la propriété flashEnabled :
flashEnabled = trueFlash est maintenant pris en charge pour les caméras avant et arrière.
Pour les photos, l'appareil photo clignote un peu comme l'appareil photo iOS d'origine. Pour la vidéo, la torche (flash) permettra la durée de la capture vidéo.
Pour les modèles qui prennent en charge Retina Flash, l'appareil photo avant utilisera le flash par défaut pour la capture d'image. Si Retina Flash n'est pas prise en charge, un faux flash rétine est utilisé similaire à Snapchat.
Pour les vidéos face à face, une vue blanche à 85% opaque sera placée sur le flux vidéo pendant la durée de la capture vidéo.
Par défaut, SwiftyCam se lancera vers la caméra arrière. Cela peut être modifié en modifiant la propriété defaultCamera dans viewDidLoad :
override func viewDidLoad ( ) {
super . viewDidLoad ( )
defaultCamera = . front
...
}SwiftyCam prend en charge la capture des caméras avant et arrière. Pour changer de caméras, appelez la fonction:
switchCamera ( )FOC-TO-FOCUS, PINCH-TO-ZOOM et CAME CAMERE FLASH ne sont pas pris en charge lorsque l'appareil photo avant est sélectionné. Le changement de vidéo pendant l'enregistrement de la vidéo n'est pas actuellement pris en charge
SWIFTYCAM permet également de basculer entre les caméras avec un geste à double robinet. Pour désactiver cette fonctionnalité, utilisez la propriété doubleTapCameraSwitch :
doubleTapCameraSwitch = falseSwiftyCam a plusieurs options pour configurer la fonctionnalité de la capture:
La qualité de la vidéo peut être définie par la propriété vidéoqualité de SwifTyCamViewController. Les choix disponibles correspondent à la correspondance AvcapturesSessionPreset :
| Vidéo vidéo | AvCaptureSessionPreset |
|---|---|
.high | AvCapturePresethigh |
.medium | AvCapturePresetmedium |
.low | AvCapturePresetlow |
.resolution352x288 | AVCAPTURESSESSEPRESET352X288 |
.resolution640x480 | AVCAPTURESSESSEPRESET640X480 |
.resolution1280x720 | AVCAPTURESSESSEPRESET1280X720 |
.resolution1920x1080 | AvCapturesessionPreset1920x1080 |
.resolution3840x2160 | AVCAPTURESSESSEPRESET3840X2160 |
.iframe960x540 | AVCAPTURESSESSEPRESEFRAME960X540 |
.iframe1280x720 | AVCAPTURESSESSEPRESEFRAME1280X720 |
La valeur par défaut est . High . Pour une utilisation avec la caméra frontale ,. High sera toujours utilisée.
Si vous utilisez un swiftycambutton, vous pouvez définir une durée vidéo maximale pour la durée de la vidéo. L'enregistrement vidéo m'arrêtera automatiquement une fois le délai atteint et la méthode du délégué SwiftyCamDidFinishRecordingVideo sera appelée. Pour définir cette valeur, modifiez simplement la valeur maximumVideoDuration :
maximumVideoDuration = 10.0Une valeur de 0,0 permettra un enregistrement vidéo illimité via le swiftycambutton. La valeur par défaut est de 0,0 .
SwiftyCam prend en charge le zoom numérique de la session de la caméra via des gestes de pincement et de pan. Les gestes fonctionnent similaires à l'application iOS par défaut et zoomeront au niveau de zoom pris en charge maximum. Le zoom de la caméra n'est pris en charge que sur la caméra arrière. AvFoundation ne prend pas actuellement en charge le zoom de caméra face à face. Pour désactiver cette fonctionnalité, modifiez la propriété pinchToZoom :
pinchToZoom = false Par défaut, pinchToZoom est activé.
SwiftyCam prend également en charge la possibilité de zoomer la caméra arrière avec des gestes de casserole verticaux. Pour désactiver cette fonctionnalité, modifiez la propriété swipeToZoom :
swipeToZoom = false Par défaut, swipeToZoom est activé. Les gestes par défaut zooment dans la session de capture avec un coup vers le bas et zoomer avec un coup vers le haut. Cela peut être inversé en modifiant la propriété swipeToZoomInverted :
swipeToZoomInverted = true Vous pouvez également restreindre la quantité que la caméra arrière peut zoomer. Pour ce faire, utilisez la propriété maxZoomScale :
maxZoomScale = 2.0 Par défaut, maxZoomScale est défini sur Infinite . Le niveau de zoom maximum réel est déterminé par le VideoMaxzoomfactor de l'appareil.
SwiftyCam, par défaut, prend en charge Appuyez sur Tap pour se concentrer sur l'aperçu vidéo. SWIFTYCAM définira les niveaux de mise au point et d'exposition de la session au point taraudé. Bien que TAP pour régler l'exposition soit pris en charge sur les deux caméras, Tap to Focus n'est pris en charge que sur les caméras arrière. L'autofocus et l'auto-exposition seront reprise une fois que SwiftyCam détecte un mouvement significatif du point taraudé. Pour désactiver cette fonctionnalité, modifiez la propriété tapToFocus :
tapToFocus = false Par défaut, tapToFocus est activé. Si vous souhaitez afficher une animation à l'écran lorsqu'une appuyez sur la mise au point est lancée, vous pouvez utiliser le SwiftyCamDidFocusAtPoint(focusPoint:) pour obtenir les coordonnées de TAP et fournir votre propre animation de tap
Par défaut, SwiftyCam définira l'orientation photo en portrait. Si vous souhaitez préserver l'orientation des photos de capture pour permettre le support des images du paysage, utilisez la propriété shouldUseDeviceOrientation :
shouldUseDeviceOrientation = true SWIFTYCAM a la capacité de permettre à l'arrière-plan l'audio de continuer à jouer dans la session et d'être capturé par l'enregistrement vidéo. Par défaut, cela est activé. Si vous souhaitez désactiver cette fonctionnalité, modifiez la propriété allowBackgroundAudio :
allowBackgroundAudio = false Pour les modèles pris en charge (iPhone 5 et 5C), AvcapturedEvice prend en charge un coup de pouce à faible luminosité lorsqu'il est détecté que la session de capture est dans une zone de faible luminosité. Par défaut, cela est défini sur true. Il peut être modifié avec la variable lowLightBoost :
lowLightBoost = falseLorsqu'un utilisateur lance d'abord SwiftyCamViewController, il sera invité à l'autorisation d'accès aux caméras et aux microphones. Par défaut, si un utilisateur refuse l'accès au matériel, SWIFTYCAM fournira une invite aux paramètres de confidentialité de l'application dans l'application paramètres iOS.
Autres propriétés:
isCameraFlashOn - BooleanisVideoRecording - BooleanisSessionRunning - booléencurrentCamera - CameraselelectionSi vous avez des questions, des demandes ou des améliorations, n'hésitez pas à soumettre une demande de traction, à créer un problème ou à me contacter en personne:
Andrew walz [email protected]