代码之家  ›  专栏  ›  技术社区  ›  milan.rancic

ios7 CameraPickerController来自相机的图像已冻结

  •  4
  • milan.rancic  · 技术社区  · 11 年前

    我有一个简单的相机视图控制器代码:

    UIImagePickerController picker = new UIImagePickerController();
    picker.PrefersStatusBarHidden ();
    picker.SourceType = UIImagePickerControllerSourceType.Camera;
    UIImagePickerControllerCameraDevice dev = picker.CameraDevice;
    PresentViewController (picker, false, null);
    picker.FinishedPickingMedia += (object sender, UIImagePickerMediaPickedEventArgs e) => BeginInvokeOnMainThread (delegate {DismissViewController (false, null);});
    

    当应用程序启动时,我可以正常拍摄照片,但当我再次出现picker时,相机视图会出现,但上一次拍摄的帧(图像)会显示并冻结。如果我移动设备,图像不会改变。换句话说,我可以用一次相机,但不能用两次。我做错了什么?在…上 iOS6 它可以完美地工作。

    1 回复  |  直到 11 年前
        1
  •  4
  •   Florian Schaal    11 年前

    制作一个pickerDelegate类对我来说很成功。你只需要在构造函数中传递当前的VC,就可以在VC中处理图像。

    选取器委派

    private class pickerDelegate : UIImagePickerControllerDelegate
            {
                private yourVC _vc;
    
                public pickerDelegate (yourVC controller) : base ()
                {
                    _vc = controller;
                }
    
                public override void FinishedPickingImage (UIImagePickerController picker, UIImage image, NSDictionary editingInfo)
                {
                   //Do something whit the image
                    _vc.someButton.SetBackgroundImage (image, UIControlState.Normal);
    
                    //Dismiss the pickerVC
                    picker.DismissViewController (true, null);
                }
            }
    

    查看DidLoad

    imagePicker = new UIImagePickerController ();
    
    //Set the Delegate and pass the current VC
    imagePicker.Delegate = new pickerDelegate (this);