
Swiftycamは、簡単な写真やビデオキャプチャを備えたシンプルでSnapchatスタイルのiOSカメラフレームワークです。 Swiftycamを使用すると、ユーザーは同じセッションからの写真とビデオの両方を構成がほとんどなくキャプチャできます。
AVFoundationでカメラビューコントローラーの構成は退屈で時間がかかる場合があります。 Swiftycamは、AVSessionの完全な制御を提供するビューコントローラーのドロップです。
| swiftycam | |
|---|---|
| Snapchatスタイルのメディアキャプチャ | |
| iOS8+をサポートします | |
| 画像キャプチャ | |
| ビデオキャプチャ | |
| 手動の画質設定 | |
| フロントおよびリアカメラのサポート | |
| フロントとリアフラッシュ | |
| 網膜フラッシュサポート | |
| 手動ズームをサポートします | |
| 手動のフォーカスをサポートします | |
| 低光設定 | |
| バックグラウンドオーディオサポート |
SwiftycamはBSDライセンスの下で利用できます。詳細については、ライセンスファイルを参照してください。
Swiftycamはココアポッドから入手できます。インストールするには、次の行をPodfileに追加するだけです。
pod "SwiftyCam"これをCartfileに追加します
github "Awalz/SwiftyCam" ~> 2.2.1
$ carthage update SwiftyCam
ソースフォルダーの内容をプロジェクトにコピーするだけです。
Swiftycamを使用することは非常に簡単です。
iOS 10の時点で、AppleはNSCameraUsageDescriptionとNSMicrophoneUsageDescription info.plistのnsmicrophoneageagedessssistringsのアディトンを必要とします。例:
< key >NSCameraUsageDescription</ key >
< string >To Take Photos and Video</ string >
< key >NSMicrophoneUsageDescription</ key >
< string >To Record Audio With Video</ string >cocoapodsからswiftycamをインストールする場合は、モジュールをビューコントローラーにインポートしてください。
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 = trueフラッシュは、フロントとリアの向けカメラでサポートされています。
写真の場合、カメラはストックiOSカメラのようにフラッシュします。ビデオの場合、トーチ(フラッシュ)はビデオキャプチャの期間中に有効になります。
Retina Flashをサポートするモデルの場合、フロントカメラは画像キャプチャにデフォルトのフラッシュを使用します。 Retina Flashがサポートされていない場合、Faux Retina FlashがSnapchatに似ています。
正面に向かうビデオの場合、ビデオキャプチャの期間中、ビデオフィードの上に白い85%の不透明なビューが配置されます。
デフォルトでは、Swiftycamは後ろ向きのカメラに起動します。これは、 viewDidLoadでdefaultCameraプロパティを変更することで変更できます。
override func viewDidLoad ( ) {
super . viewDidLoad ( )
defaultCamera = . front
...
}Swiftycamは、フロントカメラとバックカメラの両方からのキャプチャをサポートしています。カメラを切り替えるには、関数を呼び出します。
switchCamera ( )前面カメラが選択されている場合、タップツーフォーカス、ピンチからズーム、カメラのフラッシュはサポートされていません。ビデオの録画中にビデオを切り替えることは現在サポートされていません
また、Swiftycamは、ダブルタップジェスチャーを備えたカメラ間を切り替えることもできます。この機能を無効にするには、 doubleTapCameraSwitchプロパティを使用します。
doubleTapCameraSwitch = falseSwiftycamには、キャプチャの機能を構成するためのいくつかのオプションがあります。
ビデオ品質は、SwiftycamviewControllerのビデオ品質のプロパティによって設定できます。利用可能な選択肢は、一致するavcapturessessionpresetに対応しています。
| ビデオ品質 | avcapturessessionpreset |
|---|---|
.high | AvcapturePreseTheEthETHITE |
.medium | avcapturepresetmedium |
.low | avcapturepresetlow |
.resolution352x288 | avcapturessessionpreset352x288 |
.resolution640x480 | avcapturessessionpreset640x480 |
.resolution1280x720 | avcapturessessionpreset1280x720 |
.resolution1920x1080 | avcapturessessionpreset1920x1080 |
.resolution3840x2160 | avcapturessessionpreset3840x2160 |
.iframe960x540 | avcapturessessionpresetiframe960x540 |
.iframe1280x720 | avcapturessessionpresetiframe1280x720 |
デフォルト値は.highです。前面カメラで使用するためには、 .highが常に使用されます。
swiftycambuttonを使用する場合、ビデオの長さの最大ビデオ期間を設定できます。ビデオ録画は、時間制限に達し、代表者の方法がSwiftyCamDidFinishRecordingVideoに呼び出されたら、自動的に停止します。この値を設定するには、 maximumVideoDuration値を変更するだけです。
maximumVideoDuration = 10.00.0の値を使用すると、Swiftycambuttonを介した無制限のビデオ録画が可能になります。デフォルト値は0.0です。
Swiftycamは、ピンチとパンのジェスチャーを介してカメラセッションのデジタルズームをサポートしています。ジェスチャーは、デフォルトのiOSアプリと同様に機能し、サポートされている最大ズームレベルにズームします。カメラズームは、後ろ向きのカメラでのみサポートされています。 AVFoundationは現在、フロントに面したカメラズームをサポートしていません。この機能を無効にするには、 pinchToZoomプロパティを変更します。
pinchToZoom = falseデフォルトでは、 pinchToZoomが有効になっています。
Swiftycamは、垂直パンジェスチャーで後部向けカメラをズームする機能もサポートしています。この機能を無効にするには、 swipeToZoomプロパティを変更します。
swipeToZoom = falseデフォルトでは、 swipeToZoomが有効になっています。デフォルトのジェスチャーは、下向きのスワイプでキャプチャセッションをズームし、上向きのスワイプでズームアウトします。これは、 swipeToZoomInvertedプロパティを変更することで逆転させることができます。
swipeToZoomInverted = trueまた、背面カメラがズームできる量を制限することもできます。これを行うには、 maxZoomScaleプロパティを使用してください。
maxZoomScale = 2.0デフォルトでは、 maxZoomScaleは無限に設定されています。実際の最大ズームレベルは、デバイスのVideoMaxzoomFactorによって決定されます。
swiftycamは、デフォルトでは、タップをサポートしてビデオプレビューに焦点を合わせます。 Swiftycamは、セッションの焦点と露出レベルをタップポイントに設定します。両方のカメラでタップして露出を設定している間、タップしてフォーカスは後ろ向きカメラでのみサポートされます。 Swiftycamがタップされたポイントからの重要な動きを検出すると、オートフォーカスとオートエスポジュアが再開されます。この機能を無効にするには、 tapToFocusプロパティを変更します。
tapToFocus = falseデフォルトでは、 tapToFocusが有効になっています。タップが開始されたときに画面アニメーションを表示したい場合は、 SwiftyCamDidFocusAtPoint(focusPoint:)使用して、タップの座標を取得し、独自のタップアニメーションを提供できます。
デフォルトでは、Swiftycamは写真の向きをポートレートに設定します。ランドスケープ画像のサポートを可能にするためにキャプチャ写真の向きを保持したい場合は、 shouldUseDeviceOrientationことを使用します。
shouldUseDeviceOrientation = trueSwiftycamには、バックグラウンドオーディオがセッション内で再生を続けることができ、ビデオ録画によってキャプチャされる機能があります。デフォルトでは、これが有効になっています。この機能を無効にしたい場合は、 allowBackgroundAudioプロパティを変更します。
allowBackgroundAudio = falseサポートされているモデル(iPhone 5および5C)の場合、AvcaptureDeviceは、キャプチャセッションが低光領域にあることが検出された場合、低光のブーストをサポートします。デフォルトでは、これはtrueに設定されています。 lowLightBoost変数で変更できます。
lowLightBoost = falseユーザーが最初にSwiftycamviewControllerを起動すると、カメラとマイクにアクセスする許可が求められます。デフォルトでは、ユーザーがハードウェアへのアクセスを拒否した場合、SwiftycamはiOS Settingsアプリケーション内のAPPプライバシー設定にプロンプトを提供します。
その他のプロパティ:
isCameraFlashOn -booleanisVideoRecording -booleanisSessionRunning -booleancurrentCameraカメラセレクションご質問、リクエスト、または強化がある場合は、プルリクエストを送信したり、問題を作成したり、直接ご連絡ください。
Andrew Walz [email protected]