CGAffineTransformInvert:UIImagePickerController中的奇异矩阵,带showsCameraControls = NO

时间:2012-12-04 17:25:55

标签: iphone ios6 uiimagepickercontroller

我用两个不同的应用尝试了两次,我得到同样的东西。我有一个设置UIImagePIckerController实例,如下所示:

- (IBAction)addImage:(UIBarButtonItem *)sender {


    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        NSArray *mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
        if ([mediaTypes containsObject:(NSString *)kUTTypeImage]) {
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;
            picker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
            picker.allowsEditing = NO;
            picker.showsCameraControls = NO;

            [self presentViewController: picker animated:YES completion:NULL];

        }           
 [..]   

}

这是第二次。在第一次我设置了自定义叠加来运行快门和其他功能。一切运行正常,但我一直在控制台上出错:

 <Error>: CGAffineTransformInvert: singular matrix.

当我运行应用程序时,每次我在相机启动时旋转(或移动哪些信号旋转)设备{something happens here}。我在我的iPhone 4和iPad Mini上尝试了相同的结果。经过大量的挖掘,我发现这只发生在

的情况下
picker.showsCameraControls = NO;

如果我把

picker.showsCameraControls = YES;

然后我没有收到任何消息(虽然我的自定义叠加层也被隐藏了)。确保它不是自定义覆盖本身,我试着将其删除,它仍然会给出错误消息。

有人对我应该怎么做有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我相信它基本上是良性的,因为Apple自己的PhotoPicker示例代码会产生此警告。旋转与矩阵有关,虽然我不确定哪个矩阵特别是旋转,但是对于具有零行列式(类似于除以零)的矩阵执行操作被认为是数学违规。这样的矩阵不可逆或“单数”:

http://en.wikipedia.org/wiki/Rotation_matrix

http://en.wikipedia.org/wiki/Determinant

http://en.wikipedia.org/wiki/Singular_matrix#singular