Ho aggiornato sia il mio iPhone che il mio SDK a iOS 4.0.1 e ora la mia app non funziona allo stesso modo in cui era in esecuzione in iOS 3.x.UIImagePickerController cameraViewTransform funziona in modo diverso in iOS 4
La mia app utilizza UIImagePickerController con una camera personalizzataOverlayView (che sopprimerò in questo post). Il punto principale è che ho bisogno di vedere la fotocamera iphone in modalità a schermo intero. Per andare direttamente al problema, inserirò codice e screenshot per spiegare cosa sta succedendo.
Ho creato un'applicazione basata su visualizzazione utilizzando i progetti Modello XCode denominato "CameraTransform", quindi ho ottenuto due classi: CameraTransformAppDelegate
e CameraTransformViewController
, ok! Nel metodo di 's il CameraTransformViewController
viewDidAppear
ho messo il seguente codice:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
//[self configurePicker_FirstAttempt:picker]; Use this!
//[self configurePicker_SecondAttempt:picker]; Use this too!
[self presentModalViewController:picker animated:YES];
}
- (void)configurePicker_FirstAttempt:(UIImagePickerController*) picker {
picker.showsCameraControls = NO;
picker.navigationBarHidden = YES;
// not needed (use defaults)
//picker.toolbarHidden = YES;
//picker.wantsFullScreenLayout = YES;
}
- (void)configurePicker_SecondAttempt:(UIImagePickerController*) picker {
// Transform values for full screen support
CGFloat cameraTransformX = 1.0;
CGFloat cameraTransformY = 1.12412;
picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, cameraTransformX, cameraTransformY);
}
L'esecuzione del progetto con/ho ottenuto:
- entrambe le chiamate di metodo
configurePicker_FirstAttempt
econfigurePicker_SecondAttempt
commentato: defaultPicker.png. - solo chiamata metodo
configurePicker_SecondAttempt
commentato: configurePicker_FirstAttempt.png. - entrambe le chiamate metodo
configurePicker_FirstAttempt
econfigurePicker_SecondAttempt
non commentate: configurePicker_SecondAttempt.png.
NOTA:
- In iOS 3.x ho usato il terzo approccio (entrambi i metodi non commentate) per configurare il selettore, che era spettacolo in modalità a schermo intero, senza la "barra nera" nella parte inferiore .
- Ho controllato il valore originale
picker.cameraViewTransform
(prima di ridimensionarlo) ed è impostato su Identità (come previsto). - Il
picker.view.frame
è impostato i limiti dello schermo di (0.0, 0.0, 320.0, 480.0) - ho cercato di concatenare una traduzione alla
picker.cameraViewTransform
(dopo essere scalata), in questo modo:CGAffineTransformTranslate(picker.cameraViewTransform, 0.0, 20.0);
e ho capito che c'era qualche parte della "camera view" che era nascosta (forse la sua origine non era la 0.0, 0.0), quindi ho avuto più "camera view" sullo schermo.
Sembra che nel nuovo SDK UIImagePickerController sia cambiato in qualche modo, forse i controlli della fotocamera hanno dimensioni diverse o qualcosa di simile.
Qualcuno ha avuto questo problema?
Ho anche lo stesso problema e grazie per il suggerimento con ridimensionamento. Ho provato a tradurre, ma non sembra esserne influenzato. È davvero strano che cosa sta succedendo qui. Per ora rimango con il ridimensionamento. Se qualcuno ha una risposta adeguata a questo problema, sicuramente lo apprezzeremmo. – Buju