نقل الصورة وتغيير حجمها لا تعمل عند استخدام كاميرا مخصصة على iPhone SDK 3.1+
-
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 ولكن دون جدوى.