
Swiftycam هو إطار كاميرا IOS بسيط على طراز Snapchat لسهولة التقاط الصور والفيديو. يتيح SwiftyCam للمستخدمين التقاط كل من الصور ومقاطع الفيديو من نفس الجلسة مع القليل جدًا من التكوين.
يمكن أن يكون تكوين وحدة تحكم عرض الكاميرا في Avfoundation مملة وتستغرق وقتًا طويلاً. SwiftyCam هو انخفاض في عرض وحدة التحكم التي تعطي تحكمًا كاملاً في Avsession.
| Swiftycam | |
|---|---|
| التقاط الوسائط على غرار Snapchat | |
| دعم iOS8+ | |
| التقاط الصور | |
| التقاط الفيديو | |
| إعدادات جودة الصورة اليدوية | |
| دعم الكاميرا الأمامية والخلفية | |
| الفلاش الأمامي والخلفي | |
| دعم فلاش شبكية العين | |
| يدعم التكبير اليدوي | |
| يدعم التركيز اليدوي | |
| إعداد الضوء المنخفض | |
| دعم الصوت الخلفية |
يتوفر SwiftyCam بموجب ترخيص BSD. انظر ملف الترخيص لمزيد من المعلومات.
يتوفر SwiftyCam من خلال Cocoapods. لتثبيته ، ما عليك سوى إضافة السطر التالي إلى podfile الخاص بك:
pod "SwiftyCam" أضف هذا إلى Cartfile
github "Awalz/SwiftyCam" ~> 2.2.1
$ carthage update SwiftyCam
ما عليك سوى نسخ محتويات المجلد المصدر في مشروعك.
استخدام SwiftyCam بسيط للغاية.
اعتبارًا من iOS 10 ، تتطلب Apple Additon of NSCameraUsageDescription و NSMicrophoneUsageDescription trings to the info.plist من تطبيقك. مثال:
< key >NSCameraUsageDescription</ key >
< string >To Take Photos and Video</ string >
< key >NSMicrophoneUsageDescription</ key >
< string >To Record Audio With Video</ string >إذا قمت بتثبيت SwiftyCam من Cocoapods ، فتأكد من استيراد الوحدة النمطية في وحدة التحكم في العرض:
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يتم الآن دعم Flash للكاميرات الأمامية والخلفية.
بالنسبة للصور ، ستومض الكاميرا إلى حد كبير مثل كاميرا IOS Stock. بالنسبة للفيديو ، ستمكّن Torch (Flash) لمدة التقاط الفيديو.
بالنسبة للموديلات التي تدعم فلاش شبكية العين ، ستستخدم الكاميرا الأمامية الفلاش الافتراضي لالتقاط الصور. إذا لم يتم دعم فلاش شبكية العين ، يتم استخدام فلاش شبكية العين فو على غرار Snapchat.
بالنسبة لمقاطع الفيديو الأمامية التي تواجهها ، سيتم وضع عرض أبيض و 85 ٪ غير شفاف على تغذية الفيديو طوال مدة التقاط الفيديو.
بشكل افتراضي ، سيتم إطلاق SwiftyCam إلى الكاميرا الخلفية المواجهة. يمكن تغيير ذلك عن طريق تغيير خاصية defaultCamera في viewDidLoad :
override func viewDidLoad ( ) {
super . viewDidLoad ( )
defaultCamera = . front
...
}يدعم Swiftycam التقاط من كاميرات الأمام والخلفية. لتبديل الكاميرات ، اتصل بالوظيفة:
switchCamera ( )النقر فوق التركيز ، لا يتم دعم قرصة إلى زوم وفلاش الكاميرا عند تحديد الكاميرا الأمامية المواجهة. تبديل الفيديو أثناء تسجيل الفيديو لا يتم دعمه حاليًا
يتيح SwiftyCam أيضًا التبديل بين الكاميرات مع إيماءة النقر المزدوج. لتعطيل هذه الميزة ، استخدم خاصية doubleTapCameraSwitch :
doubleTapCameraSwitch = falseلدى SwiftyCam عدة خيارات لتكوين وظائف الالتقاط:
يمكن تعيين جودة الفيديو بواسطة خاصية VideoQuality لـ SwiftyCamViewController. تتوافق الخيارات المتاحة مع Avcapturesessionsessionpreset المطابقة:
| videoquality | Avcapturesessionpreset |
|---|---|
.high | avcapturepresethigh |
.medium | avcapturepresetmedium |
.low | avcapturepresetlow |
.resolution352x288 | Avcapturesessionpreset352x288 |
.resolution640x480 | Avcapturesessionpreset640x480 |
.resolution1280x720 | avcapturesessionpreset1280x720 |
.resolution1920x1080 | Avcapturesessionpreset1920x1080 |
.resolution3840x2160 | AVCAPTURESESSITERPRESET3840X2160 |
.iframe960x540 | Avcapturesessionsessionpresetiframe960x540 |
.iframe1280x720 | Avcapturesessionsessionpresetiframe1280x720 |
القيمة الافتراضية هي .high . للاستخدام مع الكاميرا الأمامية ، سيتم استخدام High Comeing دائمًا.
إذا كنت تستخدم SwiftyCambutton ، فيمكنك تعيين مدة الفيديو القصوى لطول الفيديو. سيتوقف تسجيل الفيديو تلقائيًا بمجرد الوصول إلى الحد الزمني وسيتم استدعاء طريقة المندوب SwiftyCamDidFinishRecordingVideo . لتعيين هذه القيمة ، ما عليك سوى تغيير قيمة maximumVideoDuration :
maximumVideoDuration = 10.0ستسمح قيمة 0.0 بتسجيل فيديو غير محدود عبر SwiftyCambutton. القيمة الافتراضية هي 0.0 .
يدعم SwiftyCam التكبير الرقمي لجلسة الكاميرا عبر إيماءات القرص والعموم. تعمل الإيماءات المشابهة لتطبيق iOS الافتراضي وستقوم بتكبير الحد الأقصى لمستوى التكبير المدعوم. يتم دعم تكبير الكاميرا فقط على الكاميرا الخلفية. لا يدعم Avfoundation حاليًا تكبير الكاميرا المواجهة. لتعطيل هذه الميزة ، قم بتغيير خاصية pinchToZoom :
pinchToZoom = false بشكل افتراضي ، يتم تمكين pinchToZoom .
يدعم SwiftyCam أيضًا القدرة على تكبير الكاميرا الخلفية التي تواجه الإيماءات العمودية. لتعطيل هذه الميزة ، قم بتغيير خاصية swipeToZoom :
swipeToZoom = false بشكل افتراضي ، يتم تمكين swipeToZoom . تكبر الإيماءات الافتراضية في جلسة الالتقاط مع انتقاد لأسفل ، والتكبير مع انتقاد تصاعدي. يمكن عكس ذلك عن طريق تغيير خاصية swipeToZoomInverted :
swipeToZoomInverted = true يمكنك أيضًا تقييد المبلغ الذي يمكن للكاميرا الخلفية التي يمكن أن تكبرها. للقيام بذلك ، استخدم خاصية maxZoomScale :
maxZoomScale = 2.0 بشكل افتراضي ، تم تعيين maxZoomScale على Infinite . يتم تحديد مستوى التكبير القصوى الفعلي بواسطة videomaxzooomfactor للجهاز.
Swiftycam ، افتراضيًا ، قم بدعم النقر للتركيز على معاينة الفيديو. ستقوم SwiftyCam بتعيين مستويات التركيز والتعرض للجلسة على النقطة المنقولة. بينما يتم دعم TAP to Set التعرض على كلا الكاميرات ، يتم دعم TAP للتركيز فقط على كاميرات المواجهة الخلفية. سيتم استئناف التركيز التلقائي والتعرض التلقائي بمجرد أن يكتشف SwiftyCam حركة كبيرة من النقطة المنقولة. لتعطيل هذه الميزة ، قم بتغيير خاصية tapToFocus :
tapToFocus = false بشكل افتراضي ، يتم تمكين tapToFocus . إذا كنت ترغب في إظهار الرسوم المتحركة على الشاشة عند بدء تشغيل النقر للتركيز ، فيمكنك استخدام SwiftyCamDidFocusAtPoint(focusPoint:) للحصول على إحداثيات Tap وتوفير الرسوم المتحركة الخاصة بك الصنبور الخاصة بك
بشكل افتراضي ، ستقوم SwiftyCam بتعيين اتجاه الصورة ليكون صورة. إذا كنت ترغب في الحفاظ على توجه صور التقاط للسماح بدعم صور المناظر الطبيعية ، فاستخدم خاصية shouldUseDeviceOrientation :
shouldUseDeviceOrientation = true يتمتع SwiftyCam بالقدرة على السماح للصوت الخلفي بمواصلة اللعب في الجلسة ، والتقاطها من خلال تسجيل الفيديو. بشكل افتراضي ، يتم تمكين هذا. إذا كنت ترغب في تعطيل هذه الميزة ، فقم بتغيير خاصية allowBackgroundAudio :
allowBackgroundAudio = false بالنسبة للنماذج المدعومة (iPhone 5 و 5C) ، تدعم Avcapturedevice دفعة ضوئية منخفضة عندما يتم اكتشاف أن جلسة الالتقاط في منطقة إضاءة منخفضة. بشكل افتراضي ، تم تعيين هذا على TRUE. يمكن تعديله باستخدام متغير lowLightBoost :
lowLightBoost = falseعندما يقوم المستخدم أولاً بتشغيل SwiftyCamViewController ، سيتم مطالبته للحصول على إذن للوصول إلى الكاميرات والميكروفونات. افتراضيًا ، إذا رفض المستخدم الوصول إلى الأجهزة ، فسيقدم SwiftyCam موجهًا لإعدادات خصوصية التطبيق داخل تطبيق إعدادات iOS.
خصائص أخرى:
isCameraFlashOn - منطقيةisVideoRecording - منطقيةisSessionRunning - منطقيةcurrentCamera - كاميراتإذا كانت لديك أي أسئلة أو طلبات أو تحسينات ، فلا تتردد في إرسال طلب سحب أو إنشاء مشكلة أو الاتصال بي شخصيًا:
Andrew Walz [email protected]