UIImageView affiche uniquement lorsque j'appelle initWithImage
Pour une raison quelconque, je ne peux qu'afficher une UIImageView quand je alloc/init à chaque itération avec une image différente. Ce qui est étrange c'est que je sais que les données de l'image est en train d'être chargé, car je suis en cours d'exécution de traitement sur l'image et le traitement fonctionne comme prévu. En bref, voici les deux méthodes que j'essayais:
//interface
@interface ViewController : UIViewController <UIAlertViewDelegate>
{
UIImageView *imageView;
}
@property (nonatomic, retain) UIImageView *imageView;
@end
//implementation
@implementation ViewController
@synthesize imageView;
//...
- (void) loadAndDisplayImage {
//Load testing image
UIImage *testImg;
testImg = [UIImage imageNamed:@"Test.png"];
self.imageView = [[UIImageView alloc] initWithImage:testImg];
//size of imageView rect
CGRect frame = self.imageView.frame;
int ivw = frame.size.width;
int ivh = frame.size.height;
//...
}
@end
Lorsque j'utilise cette méthode self.imageView = [[UIImageView alloc] initWithImage:testImg];
la ivw
et ivh
la validité des valeurs et l'image est affichée. Cependant, si je change la mise en œuvre de cette:
//implementation
@implementation ViewController
@synthesize imageView;
//...
- (void) viewDidLoad {
self.imageView = [[UIImageView alloc] init];
[self loadAndDisplayImage];
}
- (void) loadAndDisplayImage {
//Load testing image
UIImage *testImg;
testImg = [UIImage imageNamed:@"Test.png"];
self.imageView.image = testImg;
//size of imageView rect
CGRect frame = self.imageView.frame;
int ivw = frame.size.width;
int ivh = frame.size.height;
//...
}
@end
Où je suis réglage de l'image à l'aide de self.imageView.image = testImg;
, les valeurs ivw
et ivh
sont tous deux nuls et aucune image n'est affichée, mais le traitement ultérieur sur l'image est toujours précis. Dans les deux cas, je suis de l'envoi de l'image pour le traitement à l'aide [self doRecognizeImage:self.imageView.image];
. Je ne peux pas comprendre comment cela est possible. Il permettrait de faire beaucoup plus de sens pour moi si le traitement a échoué lorsque l'image n'a pas pu être démontré.
Idées? Merci.
Vous devez vous connecter pour publier un commentaire.
Le problème est que lorsque vous définissez la
image
propriété sur un déjà-init avaisUIImageView
, la taille de l'image n'est pas mis à jour pour correspondre à la nouvelle taille de l'image (contrairement àinitWithImage:
).Chaque fois que vous avez un problème de ce genre, c'est toujours la peine de vérifier la docs dans le cas où vous avez manqué quelque chose:
Ajoutez un appel à
sizeToFit
après avoir défini les propriétés de l'image:Comme une note de côté, je n'avais utiliser le
self.
point notation lorsque vous avez écrit pour un bien, de ne pas le lire, ou l'appel d'une méthode. En d'autres termes, vous pouvez vous en sortir avec juste écrit:Il pourrait être possible que votre image n'est pas le redimensionnement de l'image, de sorte que vous êtes en train de charger une image dans une UIImageView avec un cadre de la taille zéro. Essayez un réglage manuel de l'image de l'image vue à une autre valeur. Quelque chose le long des lignes de: