J'ai un problème vraiment étrange avec UIImageView. J'ai une image (un png RVB) 45x45 pixels que j'ajoute à la vue. Je peux voir que l'image est floue après avoir ajouté à la vue. Voici la même image dans le simulateur (à gauche) et dans Xcode (à droite):Pourquoi mon UIImageView est-il flou?
alt text http://partywithvika.com/iconinsim.pngalt text http://partywithvika.com/iconinxcode.png
J'ai classe UIImageView personnalisé avec ce code initWithImage:
- (id) initWithImage:(UIImage*) image {
self = [super initWithImage:image];
self.frame = CGRectMake(0, 0, 45, 45);
self.contentMode = UIViewContentModeScaleAspectFit;
self.quantity = 1;
if (self) {
self.label = [[UITextField alloc]initWithFrame:CGRectMake(0,40,45,25)];
self.label.font = [UIFont systemFontOfSize:16];
self.label.borderStyle = UITextBorderStyleNone;
self.label.enabled = TRUE;
self.label.userInteractionEnabled = TRUE;
self.label.delegate = self;
self.label.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
self.label.textAlignment = UITextAlignmentCenter;
}
self.userInteractionEnabled = TRUE;
// Prepare 3 buttons: count up, count down, and delete
self.deleteButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.deleteButton.hidden = NO;
self.deleteButton.userInteractionEnabled = YES;
self.deleteButton.titleLabel.font = [UIFont systemFontOfSize:20];
self.deleteButton.titleLabel.textColor = [UIColor redColor];
[self.deleteButton setTitle:@"X" forState:UIControlStateNormal];
[self.deleteButton addTarget:self action:@selector(deleteIcon:) forControlEvents:UIControlEventTouchUpInside];
self.upCountButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.upCountButton.hidden = NO;
self.upCountButton.userInteractionEnabled = YES;
[self.upCountButton setTitle:@"+" forState:UIControlStateNormal];
[self.upCountButton addTarget:self action:@selector(addQuantity:) forControlEvents:UIControlEventTouchUpInside];
self.downCountButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.downCountButton.hidden = YES;
self.downCountButton.userInteractionEnabled = YES;
[self.downCountButton setTitle:@"-" forState:UIControlStateNormal];
[self.downCountButton addTarget:self action:@selector(removeQuantity:) forControlEvents:UIControlEventTouchUpInside];
return self;
}
Je crée comme ça :
UIImage *desertIcon = [UIImage imageNamed:@"desert.png"];
IconObj *desertIconView = [[IconObj alloc] initWithImage:desertIcon];
desertIconView.center = CGPointMake(265,VERTICAL_POINT_ICON);
desertIconView.type = [IconObj TYPE_DESERT];
[self.view addSubview:desertIconView];
[desertIconView release];
Pourquoi l'image affichée est-elle identique à celle stockée dans un fichier?
Ceci est probablement sans rapport avec le problème, mais votre méthode init serait plus conventionnel si, après avoir attribué 'self = [super initWithImage: image]', vous vérifiez si le moi est nul, et si c'est le cas, retournez immédiatement à zéro. Si self si jamais nul, c'est soit parce que (1) l'initialiseur du parent ne peut pas s'initialiser correctement, soit (2) alloc retourné nul en raison d'une condition de mémoire étrange (extrêmement rare). C'est une bonne pratique de programmation défensive. –
Merci pour la note, je vais essayer ça. –