2012-12-04 3 views
7

Ho provato questo due volte con due diverse app e ottengo la stessa cosa. Ho impostato un'istanza UIImagePIckerController come segue:CGAffineTransformInvert: matrice singolare in UIImagePickerController con showsCameraControls = NO

- (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]; 

     }   
[..] 

} 

Questo è stato il secondo. Nel primo ho impostato una sovrapposizione personalizzata per eseguire l'otturatore e altre funzioni. Tutto funziona bene, ma continuo a ricevere un errore sulla console:

<Error>: CGAffineTransformInvert: singular matrix. 

Quando eseguo l'applicazione, ogni volta che ruoto (o muovo che segnala una rotazione) il dispositivo mentre la fotocamera è in alto {something happens here}. L'ho provato sia sul mio iPhone 4 che su iPad Mini con gli stessi risultati. Dopo un sacco di scavo ho trovato questo accade solo nel caso in cui

picker.showsCameraControls = NO; 

Se metto

picker.showsCameraControls = YES; 

Allora ottengo alcun messaggio (anche se il mio modulo elettronico personalizzato è nascosto troppo). Assicurandomi che non fosse la stessa sovrapposizione personalizzata, ho provato a lasciarlo fuori, e continua a dare il messaggio di errore.

Qualcuno ha qualche idea su cosa dovrei fare a riguardo?

+0

eccellente primo post e benvenuto a Stack Overflow. Se posso, ho intenzione di modificare due righe del tuo post e puoi fare clic sul link modifica sotto il tuo post per modificarlo ulteriormente, oppure puoi fare clic sul timestamp sopra la mia modifica per rivedere le modifiche fino ad ora sul inviare. Spiacente, nessun altro commento costruttivo sul post. Ti incoraggerei ad aggiungere qualcosa al posto di "{qualcosa succede qui}" perché non mi era del tutto chiaro cosa succede quando muovi il telefono. – jcolebrand

+0

Sto riscontrando lo stesso problema su iOS 5 iPhone 4 con picker.showsCameraControls = NO ;. Si verifica solo se salvi l'immagine - imagePickerController: didFinishPickingMediaWithInfo: in JPEG (non in PNG). Se lo salvi in ​​PNG viene ruotato in qualche modo. –

+0

@jcolebrand: Ciao ... anche io ho avuto lo stesso problema ... puoi aiutarmi a risolvere questo problema? –

risposta

1

Credo che sia in gran parte benigno come il codice di esempio PhotoPicker di Apple genera questo avviso. La rotazione ha a che fare con le matrici e mentre non sono sicuro di quale matrice in particolare viene ruotata, è considerata una violazione matematica eseguire operazioni su matrici con un fattore determinante pari a zero (simile alla divisione per zero). Una tale matrice non è invertibile o 'singolare':

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

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

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