
Swiftycam-это простой фреймворк с камерой для iOS в стиле Snapchat для удобного захвата фото и видео. Swiftycam позволяет пользователям снимать как фотографии, так и видео из одного сеанса с очень небольшим количеством конфигурации.
Настройка контроллера представления камеры в AvFoundation может быть утомительным и трудоемким. Swiftycam - это контроллер падения вида, который дает полный контроль над AVSession.
| Swiftycam | |
|---|---|
| Захват медиа в стиле Snapchat | |
| Поддержка ios8+ | |
| Захват изображения | |
| Захват видео | |
| Настройки качества ручного изображения | |
| Поддержка передней и задней камеры | |
| Передняя и задняя вспышка | |
| Поддержка Flash Retina | |
| Поддерживает ручное масштаб | |
| Поддерживает ручное фокус | |
| Настройка низкого освещения | |
| Фоновая поддержка аудио |
Swiftycam доступен по лицензии BSD. Смотрите файл лицензии для получения дополнительной информации.
Swiftycam доступен через кокопод. Чтобы установить его, просто добавьте следующую строку в свой Podfile:
pod "SwiftyCam" Добавьте это в Cartfile
github "Awalz/SwiftyCam" ~> 2.2.1
$ carthage update SwiftyCam
Просто скопируйте содержимое исходной папки в свой проект.
Использовать Swiftycam очень просто.
По состоянию на iOS 10 Apple требует Additon NSCameraUsageDescription и NSMicrophoneUsageDescription строки к Info.plist вашего приложения. Пример:
< key >NSCameraUsageDescription</ key >
< string >To Take Photos and Video</ string >
< key >NSMicrophoneUsageDescription</ key >
< string >To Record Audio With Video</ string >Если вы установите Swiftycam из Cocoapods, обязательно импортируйте модуль в свой контроллер View:
import SwiftyCam Swiftycam-это удобная рамка. Чтобы создать экземпляр камеры, создайте новый подкласс UiviewController. Замените объявление подкласса Uiviewcontroller на SwiftyCamViewController :
class MyCameraViewController : SwiftyCamViewControllerЭто все, что требуется для настройки AVSession для захвата фотографий и видео. Swiftycam предложит пользователю разрешение использовать камеру/микрофон и настроить как входы, так и выходы устройства.
Swiftycam поставляется с очень удобным методом захвата носителя. SwiftyCambutton снимает фотографии с UITapGestureRecognizer и снимает видео с UILongPressGestureRecognizer
Чтобы использовать SwiftyCambutton, просто создайте один и назначьте делегата своему SwiftycamViewController:
let captureButton = SwiftyCamButton ( frame : buttonFrame )
captureButton . delegate = self Захватить СМИ с помощью Swiftycam очень просто. Чтобы запечатлеть фотографию, просто позвоните в функцию takePhoto :
takePhoto ( ) Занимать видео так же просто. Чтобы начать запись видео, позвоните в функцию startVideoRecording :
startVideoRecording ( ) Чтобы закончить захват видео, позвоните в функцию stopVideoRecording :
stopVideoRecording ( ) Чтобы получить фотографии и видео, снятые либо SwiftyCambutton, либо вручную, вы должны реализовать SwiftyCamViewControllerDelegate и установить cameraDelegate в экземпляр контроллера вашего представления:
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
} Флэш (факел) может быть включена путем изменения свойства flashEnabled :
flashEnabled = trueFlash теперь поддерживается для передней и задней камер.
Для фотографий камера будет мигать так же, как камера для iOS. Для видео, факел (Flash) будет включать в течение всего съемки видео.
Для моделей, которые поддерживают Flash Retina, фронтальная камера будет использовать вспышку по умолчанию для захвата изображения. Если Retina Flash не поддерживается, используется флэш -флэш -сетчатой сетчатой сетчатой.
Для видео с передним, белый, 85% непрозрачный вид будет размещен над видео каналом в течение продолжительности захвата видео.
По умолчанию Swiftycam выпустит камеру сзади. Это можно изменить, изменив свойство defaultCamera в viewDidLoad :
override func viewDidLoad ( ) {
super . viewDidLoad ( )
defaultCamera = . front
...
}Swiftycam поддерживает захват как с передней, так и с задней камер. Чтобы переключить камеры, вызовите функцию:
switchCamera ( )TANK-TO FOCUS, FINCH-TO-ЗУМ и вспышка камеры не поддерживаются при выборе камеры с передней поверхностью. Переключение видео во время записи видео в настоящее время не поддерживается
Swiftycam также позволяет переключаться между камерами с жестом двойного нажатия. Чтобы отключить эту функцию, используйте свойство doubleTapCameraSwitch :
doubleTapCameraSwitch = falseSwiftycam имеет несколько вариантов конфигурации функциональности захвата:
Качество видео может быть установлено с помощью свойства видеовальца SwiftycamviewController. Доступные варианты соответствуют соответствующему AvcaptureSessionPreset :
| Видеовальт | AvcaptureSessionPreset |
|---|---|
.high | Avcaptorepresethigh |
.medium | AVCAPUTREPRESETMEDIUM |
.low | Avcaptorepresetlow |
.resolution352x288 | Avcapturessessionpreset352x288 |
.resolution640x480 | AvcaptureSessionPreset640x480 |
.resolution1280x720 | AvcaptureSessionPreset1280x720 |
.resolution1920x1080 | Avcapturessessionpreset1920x1080 |
.resolution3840x2160 | AvcaptureSessionPreset3840x2160 |
.iframe960x540 | Avcapturessessionpresetiframe960x540 |
.iframe1280x720 | Avcapturessessionpresetiframe1280x720 |
Значение по умолчанию . Для использования с фронтальной камерой всегда будет использоваться.
При использовании SwiftyCambutton вы можете установить максимальную продолжительность видео для длины видео. Видеозапись будет автоматически остановлен после достижения срока, и будет вызван метод делегата SwiftyCamDidFinishRecordingVideo . Чтобы установить это значение, просто измените значение maximumVideoDuration :
maximumVideoDuration = 10.0Значение 0,0 позволит выполнять неограниченную видеозапись через SwiftyCambutton. Значение по умолчанию составляет 0,0 .
Swiftycam поддерживает цифровой масштаб сеанса камеры с помощью жестов PINCH и PAN. Жесты работают аналогично приложению для iOS по умолчанию и будут увеличиваться до максимального уровня увеличения поддерживаемого увеличения. Увеличение камеры поддерживается только на задней камере. AvFoundation в настоящее время не поддерживает масштабную камеру с фронтальной камерой. Чтобы отключить эту функцию, измените свойство pinchToZoom :
pinchToZoom = false По умолчанию, pinchToZoom включена.
Swiftycam также поддерживает возможность масштабировать камеру с задней поверхностью с помощью вертикальных жестов. Чтобы отключить эту функцию, измените свойство swipeToZoom :
swipeToZoom = false По умолчанию swipeToZoom включена. Жесты по умолчанию увеличиваются в сессии захвата с нисходящим ударом и увеличивались с наступлением вверх. Это может быть изменено, изменив свой свойство swipeToZoomInverted :
swipeToZoomInverted = true Вы также можете ограничить количество, которое может увеличить камеру с задней поверхностью. Для этого используйте свойство maxZoomScale :
maxZoomScale = 2.0 По умолчанию maxZoomScale настроен на бесконечное . Фактический максимальный уровень масштабирования определяется VideomAxzoomfactor устройства.
Swiftycam, по умолчанию, поддержка Tap, чтобы сосредоточиться на предварительном просмотре видео. Swiftycam установит фокусировку и уровни экспозиции сеанса на поступок. В то время как Tap для установки экспозиции поддерживается на обеих камерах, Tap to Focus поддерживается только на задней стороне камер. Автофокус и автоэкспонирование будут возобновлены после того, как Swiftycam обнаружит значительное движение из точки постукивания. Чтобы отключить эту функцию, измените свойство tapToFocus :
tapToFocus = false По умолчанию tapToFocus включен. Если вы хотите показать анимацию на экране, когда инициируется нажатие к фокусировке, вы можете использовать SwiftyCamDidFocusAtPoint(focusPoint:) чтобы получить координаты TAP и предоставить свою собственную анимацию Tap
По умолчанию Swiftycam установит ориентацию на фотографию для портрета. Если вы хотите сохранить ориентацию фотографий захвата, чтобы обеспечить поддержку ландшафтных изображений, используйте свойство shouldUseDeviceOrientation :
shouldUseDeviceOrientation = true Swiftycam может позволить фоновому звуку продолжать играть в сессии и быть захваченной видеозапись. По умолчанию это включено. Если вы хотите отключить эту функцию, измените свойство allowBackgroundAudio :
allowBackgroundAudio = false Для поддерживаемых моделей (iPhone 5 и 5C) AvCaptureDevice поддерживает повышение освещения, когда обнаруживается, что сеанс захвата находится в области низкого освещения. По умолчанию это установлено на True. Его можно изменить с помощью переменной lowLightBoost :
lowLightBoost = falseКогда пользователь сначала запускает SwiftycamViewController, им будет предложено разрешение на доступ к камерам и микрофонам. По умолчанию, если пользователь отклоняет доступ к аппаратному обеспечению, Swiftycam предоставит подсказку для настройки конфиденциальности приложения внутри приложения настроек iOS.
Другие свойства:
isCameraFlashOn - логическийisVideoRecording - логическийisSessionRunning - логическийcurrentCamera - камераЕсли у вас есть какие -либо вопросы, запросы или усовершенствования, не стесняйтесь отправлять запрос на привлечение, создать проблему или лично свяжитесь со мной:
Эндрю Уолз Эндрюджвальц@gmail.com