Friday, 15 June 2012

ios - AVCaptureSession camera fixed orientation with rotating interface -


पूर्वावलोकन के लिए AVCaptureVideoPreviewLayer के साथ सामान्य ए, आदि कैमरा कार्यान्वयन का अनुमान लगाया जा सकता है। अब नियंत्रण (और बाधाओं) के साथ शीर्ष पर एक और दृश्य जोड़ें अब जब फोन घुमाया जाता है, तो नियंत्रण सामान्य रूप से घुमाते हैं, लेकिन मैं चाहता हूं कि पूर्वावलोकन अपरिवर्तित हो, जैसा कि ऐप्पल के कैमरा ऐप में है मैं नियंत्रणों के साथ घूमने से पूर्वावलोकन कैसे रख सकता हूं?

यह काम करता है लेकिन एनीमेशन बदसूरत है:

  - (शून्य) डिवाइसऑरेंटेशनडिड चेंज {UIDevice ओरिएंटेशन ओरिएंटेशन = [[यूआईडीविस CurrentDevice] अभिविन्यास]; यदि (अभिविन्यास == यूआईडीइविसेओरिएंटेशनफैसअप || अभिविन्यास == यूआईडीइविसऑरेंटेशनफ़ेसडाउन || अभिविन्यास == यूआईडीइविसऑरेंटेशनअज्ञात || वर्तमानऑरिएंटेशन == अभिविन्यास) {वापसी; } वर्तमानऑरिएंटेशन = अभिविन्यास; अगर (self.previewLayer) {if (अभिविन्यास == UIInterfaceOrientationPortrait) {self.previewLayer.connection.videoOrientation = AVCaptureVideoOrientationPortrait; Self.previewLayer.frame = self.view.bounds; } और अगर (अभिविन्यास == UIInterfaceOrientationLandscapeLeft) {self.previewLayer.frame = self.view.bounds; Self.previewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeLeft; } और अगर (अभिविन्यास == UIInterfaceOrientationLandscapeRight) {self.previewLayer.frame = self.view.bounds; Self.previewLayer.connection.videoOrientation = AVCaptureVideoOrentationLandscapeRight; }}  

में

  - (BOOL ) आवेदन: (UIApplication *) आवेदन किया FinishLaunchingWithOptions: (NSDictionary *) लॉन्च ऑप्शन {_lowerWindow = [[UIWindow alloc] initWithFrame: self.window.bounds]; _lowerWindow.backgroundColor = [UIColor स्पष्ट कॉलर]; _lowerWindow.hidden = नहीं; हां वापसी; }  

तब जब आप पूर्वावलोकन बनाते हैं

  [स्व सेटप्रिव्यूलेयर: [[ए वीकैप्चर वीडियोज़ प्रक्षेपण आलोक] initWith सत्रः कब्जा सत्र]]; [स्व.प्राइवलेयर सेट विडियोग्रेविटी: एवीएलएयर विडियोग्राविटी रीसाइज़ेसफिफ़फिल]; सीजीआरएक्ट परतरेक्ट = [[[स्व दृश्य] परत] सीमा]; [स्व.प्राइवलेयर सेटबाउंडः लेयररेक्ट]; [स्व। पूर्वावलोकनलेयर सेट स्थिति: CGPointMake (CGRectGetMidX (परतक्रेक्ट), सीजीआरएक्टगेट एमडीवाई (परतरेट))]; Self.cameraView = [[UIView alloc] initWithFrame: [self.view सीमा]]; [[स्वयं केमैराव्वेज लेयर] ऐड स्क्वायर: स्वयं। प्रीव्यूलेयर]; AppDelegate * प्रतिनिधि = [[UIApplication साझा किया गया अनुप्रयोग] प्रतिनिधि]; [Delegate.lowerWindow insertSubview: self.camera नीचे देखेंस्यूब दृश्य: self.view];  

यह एक दूसरी UIWindow का उपयोग करता है जिसमें पूर्वावलोकन परत शामिल होगा; स्टोरीबोर्ड द्वारा बनाई गई मूल UIWindow में यूआई शामिल है और जब यह एक नहीं करता है। एकमात्र दोष यह है कि रोटेशन के दौरान स्क्रीन रिक्त हो जाती है।

केवल आईओएस 8 पर परीक्षण किया गया।


No comments:

Post a Comment