2012-04-15 24 views
6

क्या UIImagePickerController के प्रदर्शित करने योग्य फ्रेम आकार को बदलना संभव है? मैं कैमरा दृश्य प्रदर्शित करना चाहता हूं लेकिन पूरी स्क्रीन पर नहीं, लेकिन 100x100 बाध्यकारी बॉक्स में कहूं।UIImagePickerController के फ्रेम आकार को कॉन्फ़िगर करना

यहाँ मेरी viewDidAppear है:

- (void) viewDidAppear:(BOOL)animated { 

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
picker.showsCameraControls = NO; 
picker.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y); 

[self presentModalViewController:picker animated:YES]; 

[super viewDidAppear:YES]; 
} 

मुझे लगता है कि कहीं भी इसके लिए कोई तरीका नहीं ढूंढ सका ... यह का उपयोग कर किसी ना?

+0

क्या आपने अपना प्रश्न हल किया? –

उत्तर

12

मैंने अपने आखिरी पोस्ट से कोड के साथ प्रयोग किया, और अंतिम पैमाने पर परिवर्तन (जिसने इसे पूर्ण आकार दिया) पर टिप्पणी की और मैं एक प्यारी लघु कैमरा छवि के साथ समाप्त हुआ, मेरी स्क्रीन के बीच में तैरने वाला एक छोटा सा कैमरा मैं आप और अधिक अनुकूलित कर सकता है कैमरा दृश्य के आकार का & स्थान को बदलने यकीन

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 

imagePickerController.delegate = self; 
imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil]; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 
imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; 

UIView *controllerView = imagePickerController.view; 

controllerView.alpha = 0.0; 
controllerView.transform = CGAffineTransformMakeScale(0.5, 0.5); 

[[[[UIApplication sharedApplication] delegate] window] addSubview:controllerView]; 

[UIView animateWithDuration:0.3 
        delay:0.0 
       options:UIViewAnimationOptionCurveLinear 
      animations:^{ 
       controllerView.alpha = 1.0; 
      } 
      completion:nil 
]; 

[imagePickerController release]; 

- यह निश्चित रूप से काम करता है सटीक कोड मैं ज़ूम/फीका-इन संक्रमण सहित इस्तेमाल किया,, है।
+1

awsome job dude – coder1010

+1

आपका कोड अच्छा काम करता है। लेकिन ओवरले स्क्रीन से नीचे मार्जिन शीर्ष मार्जिन से अधिक है और इसलिए यह स्क्रीन के केंद्र में बिल्कुल नहीं आता है। इसके लिए कोई समाधान? –

+0

बस नियंत्रकों की अंतिम स्थिति को एनिमेशन में बदलें: ब्लॉक – SomaMan

1

मैंने कभी-कभी छविपिकर के दृश्य को सीधे जोड़ा है, हालांकि मैंने कभी भी अपने अंतिम आकार को बदलने के साथ प्रयोग नहीं किया है, यह स्क्रीन में "ज़ूम" करता है, यह सुझाव देता है कि इसे विभिन्न आकारों में दिखाया जा सकता है (कोड उठाया गया सीधे मेरी परियोजनाओं में से एक, इसलिए शायद सभी प्रासंगिक नहीं) -

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 

imagePickerController.delegate = self; 
imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil]; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 
imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; 

UIView *controllerView = imagePickerController.view; 

controllerView.alpha = 0.0; 
controllerView.transform = CGAffineTransformMakeScale(0.5, 0.5); 

[[[[UIApplication sharedApplication] delegate] window] addSubview:controllerView]; 

[UIView animateWithDuration:0.3 
         delay:0.0 
        options:UIViewAnimationOptionCurveLinear 
       animations:^{ 
        controllerView.transform = CGAffineTransformMakeScale(1.0, 1.0); 
        controllerView.alpha = 1.0; 
       } 
       completion:nil 
]; 

[imagePickerController release]; 

यह देखने में रुचि रखें कि आपको इसके साथ कोई परिणाम मिल रहा है या नहीं।

+0

एनओपी, काम नहीं किया, क्षमा करें ... मुझे आश्चर्य है कि कुछ इतना आसान नहीं मिल सकता है। – TommyG

3

यदि आप UIImagePickerController के शीर्ष पर ओवरले प्रदर्शित करना चाहते हैं, जैसे कि मेरे मामले में, वही आपके ओवरले पर कुछ UI घटकों (जैसे शीर्ष बार और निचला पट्टी) के बीच नियंत्रक की "लाइव कैमरा फ़ीड" (दृश्य) को फ़िट करने का समय, निम्न कोड का उपयोग करें। यह मुख्य अनुप्रयोग विंडो के सबव्यू के बजाय वर्तमान नियंत्रक के सबव्यूव के रूप में UIImagePickerController के दृश्य को प्रदर्शित करने के मुख्य अंतर के साथ, सोमामन के उत्तर (धन्यवाद) पर आधारित है। viewDidLoad में इस कोड डाल():

// Overlay view with custom camera controls and a top bar and a bottom bar 
self.overlay = [[CameraOverlayView alloc] initWithFrame:self.view.bounds]; 
[self setOverlayViewModel]; 

self.imagePicker = [[UIImagePickerController alloc] init]; 
self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
self.imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; 
self.imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff; 
self.imagePicker.showsCameraControls = NO; 
self.imagePicker.navigationBarHidden = YES; 
self.imagePicker.toolbarHidden = YES; 
self.imagePicker.delegate = self; 

UIView *imagePickerView = self.imagePicker.view; 

if ([[UIScreen mainScreen] bounds].size.height == 568.0f) { 
    // iPhone 5, 16:9 ratio, need to "zoom in" in order to fill the screen since there is extra space between top and bottom bars on a taller screen 
    self.imagePicker.cameraViewTransform = CGAffineTransformScale(self.imagePicker.cameraViewTransform, 1.5, 1.5); // change 1.5 to suit your needs 
} 
CGRect cameraViewFrame = CGRectMake(0, self.overlay.topBarHeight, 
            self.view.bounds.size.width, 
            self.view.bounds.size.height - self.overlay.topBarHeight - self.overlay.bottomBarHeight); 
imagePickerView.frame = cameraViewFrame; 

// keep this order so that the overlay view is on top of the "live camera feed" view 
[self.view addSubview:imagePickerView]; 
[self.view addSubview:self.overlay]; 

टिप: cameraViewTransform कर रही है, एक ही है, जिसके परिणामस्वरूप तस्वीर पर बदलने लागू करने के लिए सुनिश्चित करें कि पिकर आप के लिए कब्जा अगर आप उपयोगकर्ता एक ही छवि के साथ खत्म करना चाहते हैं कि वे आपके रूपांतरित पिकर के दृश्य के माध्यम से देखते हैं: पी

+0

@ एलेक्स - uiimage पर ट्रांसफॉर्म कैसे सेट करें? –

+0

@ क्षितिजगोदरा हाय, माफ करना मैंने अभी यह देखा है, लेकिन मूल रूप से मैंने इसकी सीमाओं के कारण UIImagePickerController का उपयोग करके छोड़ दिया। एवी ढांचे का उपयोग करना मुश्किल नहीं था, और मैंने एक ब्लॉग पोस्ट लिखा था जिसमें कुछ अन्य सामानों के हिस्से के रूप में कुछ समय पहले शामिल किया गया था: http://radioactiveukreen.com/2014/01/06/testing-a-camera-app -इन-ios-सिम्युलेटर / –

संबंधित मुद्दे