Je crée un UIButton programme, puis en ajoutant une image masquée avec setImage:Comment faire UIButton utilise correctement une image masquée?
CGRect photoFrame = CGRectMake(11, 11, 180, 120);
UIButton *cardPhotoButton = [[UIButton alloc] initWithFrame:photoFrame];
cardPhotoButton.backgroundColor = [UIColor clearColor];
UIImage *cardPhoto = [[UIImage alloc] init];
cardPhoto = [self maskImage:
[UIImage imageNamed:[metaDict objectForKey:@"Photo"]] withMask:[UIImage imageNamed:@"CardPhotoFrame.png"]];
[cardPhotoButton setImage:cardPhoto forState:UIControlStateNormal];
cardPhotoButton.contentMode = UIViewContentModeScaleAspectFit;
[self addSubview:cardPhotoButton];
Le masquage est fait avec cette méthode, je suis arrivé sur le web:
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
return [UIImage imageWithCGImage:masked];
}
Maintenant, le problème est que le masquage pour l'état par défaut ne fonctionne pas, mais bizarrement quand je clique réellement sur le bouton et que le bouton passe à l'état "en surbrillance", les parties transparentes de l'image masquée commencent à fonctionner.
Je suppose que j'ai besoin de mettre quelque peu de couleur BG à clearColor quelque part, mais je les ai tous essayés et aucun ne fonctionne.
Des idées que je pourrais manquer?
Je veux que tous les Etats aient la même image, mais je dois le masque d'image au travail et en la transparence de l'image n'apparaît pas dans l'état par défaut, uniquement dans l'état HighLighted. – margusholland
Y a-t-il un besoin spécifique de masquage? Si vous voulez que la même image que vous voulez faire apparaître le bouton en tant que dimension de votre image, il suffit de définir le type de bouton personnalisé et de définir l'image pour l'état normal, en surbrillance et sélectionné. donc l'image restera la même dans tous les cas. J'espère maintenant que vous pouvez trouver la solution. –
L'image est en fait une photo que je veux ajouter un masque qui fera de la photo un cadre spécifique que j'essaie d'ajouter. Et en créant un nouveau UIButton mon défaut en fait un UIButtonTypeCustom n'est-ce pas? – margusholland