نقل الصورة وتغيير حجمها لا تعمل عند استخدام كاميرا مخصصة على iPhone SDK 3.1+

StackOverflow https://stackoverflow.com/questions/1990573

  •  22-09-2019
  •  | 
  •  

سؤال

اعتدت على استخدام طريقة المدرسة القديمة لإضافة تراكب على شاشة الكاميرا ، والتي عملت بشكل جيد. ومع ذلك ، منذ أن خرجت 3.1 ، تصر Apple على استخدام واجهة برمجة التطبيقات لإضافة تراكب. سرعان ما حصلت على تراكب للعمل ، لكن يبدو أنه إذا استخدمت التراكب المخصص ، فإن شاشة الحركة وتغيير حجمها غير مستجيبة ، لا يمكنني استخدامها أو استعادتها إلا ، لا يمكنني تغيير حجمها والتحرك فيها. الكود الذي أستخدمه أدناه. لقد جربت العديد من الاختلافات ، لكن الشيء الوحيد الذي يمكّن الحركة وتغيير الحجم هو إزالة الخط الذي يضيف عرض التراكب المخصص.

أيه أفكار؟

UIImage *image = [UIImage imageNamed:@"camera-template-long.png"];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] ;
imgView.image = image;

UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
overlayView.opaque = NO;
[overlayView addSubview:imgView];

UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;        
picker.showsCameraControls = YES;
picker.cameraOverlayView = overlayView;
picker.delegate = self;
picker.allowsEditing = YES;

[self presentModalViewController:picker animated:YES];
هل كانت مفيدة؟

المحلول 2

تختفي المشكلة بأكملها بمجرد استخدامك [overlayView setUserInteractionEnabled:NO]; لإيقاف عرض التراكب من التعامل مع المدخلات.

نصائح أخرى

ضع كلاهما allowsEditing/showsCameraControls خصائص إلى لا ، قم بإعداد عرضك الأصلي إلى cameraOverlayView, والاستخدام takePicture طريقة.

ثم، imagePickerController:didFinishPickingMediaWithInfo: سيتم استدعاؤه مباشرة.


الرجاء تجربة الرمز التالي:

- (void)foo {
  UIImagePickerController *controller = [[[UIImagePickerController alloc] init] autorelease]; 
  controller.sourceType = UIImagePickerControllerSourceTypeCamera; 
  controller.cameraOverlayView = self.cameraOverlay; 
  [self performSelector:@selector(moveOverlayViewToSublayer:) withObject:controller afterDelay:0.1f]; 
  controller.delegate = self; 
  [self presentModalViewController:controller animated:YES]; 
}
- (void) moveOverlayViewToSublayer:(UIImagePickerController*)controller { 
  CALayer *aLayer = self.cameraOverlay.layer.superlayer; 
  controller.cameraOverlayView = nil; 
  [aLayer addSublayer:self.cameraOverlay.layer]; 
}

آمل أن يعمل بشكل جيد.

http://www.techques.com/question/1-10178214/cameraoverlayview-prevents-editing-with-alowsediting

هذا يعمل تماما بالنسبة لي. حاولت تعطيل userInterCtactering ولكن دون جدوى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top