
SwiftyCam é a estrutura de câmera IOS simples e simples, para fácil capturar fotos e vídeos. O SwiftyCam permite que os usuários capturem fotos e vídeos da mesma sessão com muito pouca configuração.
Configurar um controlador de exibição de câmera na avfoundation pode ser tedioso e demorado. O SwiftyCam é uma queda no controlador de exibição que fornece controle completo da avição.
| Swiftycam | |
|---|---|
| Captura de mídia no estilo Snapchat | |
| Apoie iOS8+ | |
| Captura de imagem | |
| Captura de vídeo | |
| Configurações manuais de qualidade de imagem | |
| Suporte da câmera dianteiro e traseiro | |
| Flash dianteiro e traseiro | |
| Suporte flash retina | |
| Apoia o zoom manual | |
| Apoia o foco manual | |
| Configuração de baixa luz | |
| Suporte de áudio em segundo plano |
O SwiftyCam está disponível sob a licença BSD. Consulte o arquivo de licença para obter mais informações.
SwiftyCam está disponível através de Cocoapods. Para instalá -lo, basta adicionar a seguinte linha ao seu PODFILE:
pod "SwiftyCam" Adicione isso ao Cartfile
github "Awalz/SwiftyCam" ~> 2.2.1
$ carthage update SwiftyCam
Basta copiar o conteúdo da pasta de origem em seu projeto.
Usar SwiftyCam é muito simples.
A partir do iOS 10, a Apple exige o additon das seqüências de descrição NSCameraUsageDescription e NSMicrophoneUsageDescription para a info.plist do seu aplicativo. Exemplo:
< key >NSCameraUsageDescription</ key >
< string >To Take Photos and Video</ string >
< key >NSMicrophoneUsageDescription</ key >
< string >To Record Audio With Video</ string >Se você instalar o SwiftyCam da Cocoapods, não deixe de importar o módulo para o seu controlador de exibição:
import SwiftyCam O SwiftyCam é uma estrutura de conveniência de largura. Para criar uma instância da câmera, crie uma subclasse UIViewController. Substitua a Declaração da subclasse UIViewController pelo SwiftyCamViewController :
class MyCameraViewController : SwiftyCamViewControllerIsso é tudo o que é necessário para configurar o AvSession para captura de fotos e vídeos. O SWIFTYCAM levará o usuário a permissão para usar a câmera/microfone e configurar as entradas e saídas do dispositivo.
O SwiftyCam vem com um método muito conveniente de captura de mídia. Swiftycambutton captura fotos com um UITapGestureRecognizer e captura vídeo com um UILongPressGestureRecognizer
Para usar um Swiftycambutton, basta criar um e atribuir o delegado ao seu SwiftyCamViewController:
let captureButton = SwiftyCamButton ( frame : buttonFrame )
captureButton . delegate = self A captura de mídia com SwiftyCam é muito simples. Para capturar uma foto, basta chamar a função takePhoto :
takePhoto ( ) A captura de vídeo é tão fácil. Para começar a gravar vídeo, ligue para a função startVideoRecording :
startVideoRecording ( ) Para encerrar a captura de um vídeo, ligue para a função stopVideoRecording :
stopVideoRecording ( ) Para adquirir as fotos e vídeos tirados pelo Swiftycambutton ou manualmente, você deve implementar o SwiftyCamViewControllerDelegate e definir o cameraDelegate para sua instância do View Controller:
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
} O flash (tocha) pode ser ativado alterando a propriedade flashEnabled :
flashEnabled = trueO Flash agora é suportado para câmeras dianteiras e traseiras.
Para fotos, a câmera piscará como a câmera iOS de estoque. Para o vídeo, a tocha (flash) permitirá a duração da captura de vídeo.
Para modelos que suportam o Retina Flash, a câmera frontal usará o flash padrão para captura de imagem. Se o Retina Flash não for suportado, um Faux Retina Flash será usado semelhante ao Snapchat.
Para vídeos frontais, uma vista branca de 85% será colocada sobre o feed de vídeo durante a captura de vídeo.
Por padrão, o SwiftyCam será lançado para a câmera voltada para trás. Isso pode ser alterado alterando a propriedade defaultCamera em viewDidLoad :
override func viewDidLoad ( ) {
super . viewDidLoad ( )
defaultCamera = . front
...
}O SwiftyCam suporta a captura das câmeras frontal e traseira. Para trocar de câmeras, chame a função:
switchCamera ( )Tap-to-focus, beliscar a zoom e flash da câmera não são suportados quando a câmera frontal é selecionada. Mudar de vídeo enquanto o vídeo está sendo gravado no momento não é suportado atualmente
O SwiftyCam também permite alternar entre câmeras com um gesto de toque duplo. Para desativar esse recurso, use a propriedade doubleTapCameraSwitch :
doubleTapCameraSwitch = falseO SwiftyCam tem várias opções para configurar a funcionalidade da captura:
A qualidade do vídeo pode ser definida pela propriedade Videoquality do SwiftyCamViewController. As opções disponíveis correspondem ao AvcapTeSessionPreset correspondente:
| Videoquity | AVCAPTUSESSESSOPRESET |
|---|---|
.high | AvcapturePresetHigh |
.medium | AvcapturePresetMedium |
.low | AvcapturePresetLow |
.resolution352x288 | AVCAPTURESSESSIDEPRESET352X288 |
.resolution640x480 | AVCAPTURESSESSIDEPRET640X480 |
.resolution1280x720 | AVCAPTUSESSESSOPRESET1280X720 |
.resolution1920x1080 | AVCAPTURESSESSIONPRESET1920X1080 |
.resolution3840x2160 | AVCAPTUSESSESSPRESET3840X2160 |
.iframe960x540 | AVCAPTUSESSESSOPRESETIFRAME960X540 |
.iframe1280x720 | AVCAPTURESSESSIDEPRESETIFRAME1280X720 |
O valor padrão é . High . Para uso com a câmera frontal, o altura sempre será usado.
Se estiver usando um swiftycambutton, você pode definir uma duração máxima de vídeo para a duração do vídeo. A gravação de vídeo será interrompida automaticamente assim que o limite de tempo for atingido e o método delegado SwiftyCamDidFinishRecordingVideo será chamado. Para definir esse valor, basta alterar o valor maximumVideoDuration :
maximumVideoDuration = 10.0Um valor de 0,0 permitirá gravação de vídeo ilimitada via Swiftycambutton. O valor padrão é 0,0 .
O SwiftyCam suporta zoom digital da sessão da câmera via gestos de pinça e pan. Os gestos funcionam semelhante ao aplicativo iOS padrão e aumentarão o zoom para o nível máximo de zoom suportado. O zoom da câmera é suportado apenas na câmera traseira. Atualmente, a Avfoundation não suporta o zoom da câmera frontal. Para desativar esse recurso, altere a propriedade pinchToZoom :
pinchToZoom = false Por padrão, pinchToZoom está ativado.
O SwiftyCam também suporta a capacidade de aumentar o zoom da câmera traseira com gestos verticais da panela. Para desativar esse recurso, altere a propriedade swipeToZoom :
swipeToZoom = false Por padrão, swipeToZoom está ativado. Os gestos padrão aumentam o zoom na sessão de captura com um toque descendente e diminua o zoom com um toque para cima. Isso pode ser revertido alterando a propriedade swipeToZoomInverted :
swipeToZoomInverted = true Você também pode restringir a quantidade de que a câmera voltada para o traseiro pode aumentar o zoom. Para fazer isso, use a propriedade maxZoomScale :
maxZoomScale = 2.0 Por padrão, maxZoomScale está definido como infinito . O nível máximo de zoom real é determinado pelo videomaxzoomFactor do dispositivo.
Swiftycam, por padrão, Toque para focar na visualização de vídeo. O SwiftyCam definirá os níveis de foco e exposição da sessão para o ponto mais tapado. Enquanto o toque para definir a exposição é suportado nas duas câmeras, o toque para focar é suportado apenas nas câmeras voltadas para a frente. O foco automático e a exposição automática serão retomados assim que o Swiftycam detectar um movimento significativo do ponto batido. Para desativar esse recurso, altere a propriedade tapToFocus :
tapToFocus = false Por padrão, tapToFocus está ativado. Se você deseja mostrar uma animação na tela quando um toque para se concentrar é iniciado, você pode usar o SwiftyCamDidFocusAtPoint(focusPoint:) Para obter as coordenadas da TAP e fornecer sua própria animação de TAP
Por padrão, o SwiftyCam definirá a orientação da foto como retrato. Se você deseja preservar a orientação das fotos de captura para permitir o suporte para imagens da paisagem, use a propriedade shouldUseDeviceOrientation :
shouldUseDeviceOrientation = true O SwiftyCam tem a capacidade de permitir que o áudio em segundo plano continue jogando dentro da sessão e para ser capturado pela gravação de vídeo. Por padrão, isso está ativado. Se você deseja desativar esse recurso, altere a propriedade de allowBackgroundAudio :
allowBackgroundAudio = false Para modelos suportados (iPhone 5 e 5C), o Avcapturevice suporta um impulso de pouca luz quando é detectado que a sessão de captura está em uma área de pouca luz. Por padrão, isso é definido como true. Pode ser modificado com a variável lowLightBoost :
lowLightBoost = falseQuando um usuário inicia o SwiftyCamViewController, ele será solicitado a permissão para o acesso às câmeras e microfones. Por padrão, se um usuário recusar o acesso ao hardware, o SwiftyCam fornecerá um prompt às configurações de privacidade do aplicativo dentro do aplicativo de configurações iOS.
Outras propriedades:
isCameraFlashOn - booleanoisVideoRecording - booleanoisSessionRunning - BooleanocurrentCamera - CameraSelectionSe você tiver alguma dúvida, solicitação ou aprimoramento, sinta -se à vontade para enviar uma solicitação de tração, criar um problema ou entrar em contato comigo pessoalmente:
Andrew Walz [email protected]