1

カスタムカメラで UIImagePickerController を試しました.アプリケーションが外出するとき、またはサファリを呼び出すときに、カメラのシャッターが開いていないため、次のコードを使用しました.

 -(IBAction)cameraAction:(id)sender
{

   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   [defaults setValue:@"rear" forKey:@"rearcamera"];
   [defaults synchronize];
   NSLog(@"hai App %@",[defaults valueForKey:@"closeApp"]);

   dispatch_async(dispatch_get_main_queue(), ^{
       [cameraBut setSelected:NO];
       self.picker = [[UIImagePickerController alloc] init];
       self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
       self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
       self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
       self.picker.showsCameraControls = NO;
       self.picker.navigationBarHidden = YES;
       self.picker.toolbarHidden = YES;
       self.picker.wantsFullScreenLayout = YES;



   });


}
4

2 に答える 2

0

あなたの説明によると、カメラのシャッターだけを開く必要があり、カメラは完全に機能していると思います。

そのため、カメラのシャッターが開くことをシミュレートするアニメーションを 1 つ追加することをお勧めします。

そのためのコードは次のとおりです。これは CALayer のコア アニメーションです。

CATransition *shutterAnimation = [CATransition animation];
     [shutterAnimation setDelegate:self];
     [shutterAnimation setDuration:0.6];

     shutterAnimation.timingFunction = UIViewAnimationCurveEaseInOut;
     [shutterAnimation setType:@"cameraIris"];
     [shutterAnimation setValue:@"cameraIris" forKey:@"cameraIris"];
     CALayer *cameraShutter = [[CALayer alloc]init];
     [cameraShutter setBounds:CGRectMake(0.0, 0.0, 320.0, 425.0)];
     [self.layer addSublayer:cameraShutter];
     [self.layer addAnimation:shutterAnimation forKey:@"cameraIris"];

これは正確な解決策ではありませんが、回避策の 1 つです。

これがあなたの要件を達成するのに役立つことを願っています.

于 2013-03-15T06:32:38.457 に答える