UIImagePickerController et UIImagePopoverController, faible réactivité.
Bonjour à tous,
Bon ça faisait un bout de temps que je n'était pas venu demandé conseils /wink.png' class='bbc_emoticon' alt=';)' />.
J'ai juste une question. Voila pour mon appli iPad j'utilise un UIImagePickerController dans un UIPopoverController, afin d'afficher l'album photo de l'iPad et permettre à l'utilisateur de récupérer une de ces photos.
Seulement voila, dès que je dépasse 20 / 25 photos la réactivité de la fenêtre est bizarre et même semble ramer. De plus le scroll n'es pas bloqué et me permet même de continuer à monter (ou descendre) alors même que je suis déjà en haut (ou en bas).
Je cale le code que j'ai remis dans un projet à part pour voir si cela venit de mon projet ou du code en question.
ViewController.h
ViewController.m
Bon ça faisait un bout de temps que je n'était pas venu demandé conseils /wink.png' class='bbc_emoticon' alt=';)' />.
J'ai juste une question. Voila pour mon appli iPad j'utilise un UIImagePickerController dans un UIPopoverController, afin d'afficher l'album photo de l'iPad et permettre à l'utilisateur de récupérer une de ces photos.
Seulement voila, dès que je dépasse 20 / 25 photos la réactivité de la fenêtre est bizarre et même semble ramer. De plus le scroll n'es pas bloqué et me permet même de continuer à monter (ou descendre) alors même que je suis déjà en haut (ou en bas).
Je cale le code que j'ai remis dans un projet à part pour voir si cela venit de mon projet ou du code en question.
ViewController.h
<br />
#import <UIKit/UIKit.h><br />
@interface ViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIPopoverControllerDelegate><br />
{<br />
UIImagePickerController *Picker;<br />
}<br />
@property (weak, nonatomic) IBOutlet UIImageView *uneImage;<br />
-(IBAction)album:(id)sender;<br />
@end<br />
ViewController.m
<br />
#import "ViewController.h"<br />
@interface ViewController ()<br />
@property (strong, nonatomic) UIPopoverController *masterPopover;<br />
@end<br />
@implementation ViewController<br />
@synthesize masterPopover = _masterPopover;<br />
- (IBAction)album:(id)sender<br />
{<br />
Picker = [[UIImagePickerController alloc] init];<br />
Picker.delegate = self;<br />
Picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;<br />
<br />
// Création de la popover<br />
_masterPopover = [[UIPopoverController alloc] initWithContentViewController:Picker];<br />
_masterPopover.delegate = self;<br />
[_masterPopover setPopoverContentSize:CGSizeMake(500, 500) animated:YES];<br />
[_masterPopover presentPopoverFromRect:CGRectMake(215, 946, 500, 500) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];<br />
}<br />
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info<br />
{<br />
_uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];<br />
[_masterPopover dismissPopoverAnimated:YES];<br />
}<br />
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker<br />
{<br />
[_masterPopover dismissPopoverAnimated:YES];<br />
_uneImage.image = nil;<br />
}<br />
- (void)viewDidLoad<br />
{<br />
[super viewDidLoad];<br />
// Do any additional setup after loading the view, typically from a nib.<br />
}<br />
- (void)didReceiveMemoryWarning<br />
{<br />
[super didReceiveMemoryWarning];<br />
// Dispose of any resources that can be recreated.<br />
}<br />
@end<br />
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est un peu normal que ça ramme, tu a un problème de mémoire avec toutes ces images. Les images prises par la caméra ont une résolution [font=Consolas, Menlo, Monaco,]1600 x 1200,[/font]
La solution : Toi t'a pas besoin de toute cette résolution pour les afficher dans un popover, donc il faut les resizer et les stocker ailleurs ( Documents par exemple) ou bien meme dans l'album photo.
J'ai essayé de le mettre dans une fenêtre modal comme sur iPhone. Mais xCode crie au scandal car sur iPad le UIImagePickerController DOIT àŠTRE dans une UIPopoverController...
Moi je ferais comme suis :
1. Je récupère mes les images de l'album photo.
2. Je les resize ( cherche sur internet y adu code pour faire ça).
3. Je les enregistrent dans Documents.
4. Le popOver vas chercher les images qui sont dans documents ( avec la nouvelle résolution).
voila.
Tu as essayé de tracer les performances avec Instrument ?
On parle de ce problème dans ce Thread.
http://stackoverflow.com/questions/1282830/uiimagepickercontroller-uiimage-memory-and-more
Le UIImagePicker utilise les thumbnails (précalculés et pré-enregistrés) il n'ouvre pas l'image d'origine pour afficher les vignettes.
Le souci ne vient pas de là .
Il faut regarder avec Instruments.
Bon je vais voir comment alléger le reste ar une fois isolé je n'ai plus de problème, ce n'ext vraiment qu'une fois intégré dans mon application que là ça racle.
La seul différence avec le code dans un projet unique c'est qu'il est intégré sur une application importante. Mais après il n'y a rien de particulier....
Je n'y comprend rien à ce phénomène.