Comment ajouter une image de fond à un UILabel dans une application iPhone. J'ai essayé de le faire via IB mais sans résultat.
Merci beaucoup. C'est exactement ce que je voulais.
Comment ajouter une image de fond à un UILabel dans une application iPhone. J'ai essayé de le faire via IB mais sans résultat.
Essayez de le faire avec un code :
Objective-C :
theLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blah"]];
Swift :
theLabel.backgroundColor = UIColor(patternImage: UIImage(named: "blah")!)
Ou placer un UIImageView
derrière l'étiquette (non recommandé).
Mise à jour : il n'est pas recommandé de placer une UIImageView derrière une étiquette, car il faudrait alors gérer deux vues. Mais si vous devez faire quelque chose que seule une UIImageView peut faire, cela reste une bonne approche. Je pense que votre application fonctionnera mieux de cette manière.
Fonctionnalité excellente et utile, 1up ! :) Mais je me demande à quoi Apple a pensé en implémentant l'image en tant que backgroundColor. C'est tout à fait contre-intuitif ! Même le CSS a des propriétés séparées pour l'image de couleur du bg. Peut-être que c'est un héritage des interfaces utilisateur d'Apple du passé ?
Je l'ai testé et il ne prend pas en charge la transparence PNG. Il y a peut-être une astuce ? J'ai essayé de régler le backgroundColor sur clearColor avant de le régler sur l'image, juste pour le sport. Mais sans effet, bien sûr.
Si vous souhaitez que l'image soit étirée pour remplir la largeur de l'étiquette. essayez ce code.
UILabel *myLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
UIImage *img = [UIImage imageNamed:@"a.png"];
CGSize imgSize = myLabel.frame.size;
UIGraphicsBeginImageContext( imgSize );
[img drawInRect:CGRectMake(0,0,imgSize.width,imgSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
myLabel.backgroundColor = [UIColor colorWithPatternImage:newImage];
Il fonctionne mais pour une raison ou une autre la qualité n'est pas celle attendue. pourquoi ?
@Esq Si vous étirez une image, elle perdra en définition et ne sera pas d'aussi bonne qualité que l'originale.
Swift 2.2 : définir l'image d'arrière-plan avec la couleur d'arrière-plan
UIGraphicsBeginImageContextWithOptions(stationNameLabel.frame.size, false, 0.0)
let context = UIGraphicsGetCurrentContext();
let components = CGColorGetComponents(color.CGColor)
CGContextSetRGBFillColor(context, components[0], components[1], components[2], 0.4);
CGContextFillRect(context, CGRectMake(0.0, 0.0, stationNameLabel.frame.size.width, stationNameLabel.frame.size.height));
targetImage.drawInRect(CGRectMake(0.0, 0.0, stationNameLabel.frame.size.width, stationNameLabel.frame.size.height))
let resultImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
label.backgroundColor = UIColor(patternImage: resultImage)
let messageBackgroundView = UIImageView()
messageBackgroundView.image = UIImage(named: "chat-background")
if messageBackgroundView.superview != lblChatdata.superview {
lblChatdata.superview!.insertSubview(messageBackgroundView, belowSubview: lblChatdata)
messageBackgroundView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
messageBackgroundView.leadingAnchor.constraint(equalTo: lblChatdata.leadingAnchor),
messageBackgroundView.trailingAnchor.constraint(equalTo: lblChatdata.trailingAnchor),
messageBackgroundView.topAnchor.constraint(equalTo: lblChatdata.topAnchor),
messageBackgroundView.bottomAnchor.constraint(equalTo: lblChatdata.bottomAnchor),
])
messageBackgroundView.contentMode = .scaleAspectFill
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.