2010-06-14 6 views

Répondre

141

Essayez de le faire avec le 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: placer un UIImageView derrière une étiquette n'était pas recommandé car il fallait alors gérer deux vues. Mais si vous devez faire quelque chose que seul un UIImageView peut faire c'est toujours une bonne approche. Je suppose que votre application fonctionnera mieux de cette façon.

+0

Merci beaucoup. C'est exactement ce que je veux. – Joy

+1

Caractéristique excellente et utile, 1up! :) Mais je me demande à quoi pensait Apple lors de l'implémentation de l'image en tant que backgroundColor. C'est totalement contre-intuitif! Même CSS a des propriétés séparées pour l'image couleur du bg. Peut-être que c'est un héritage des Apple UI du passé? –

+4

Testé, et il ne prend pas en charge la transparence PNG. Il pourrait y avoir une astuce? J'ai essayé de définir backgroundColor à clearColor avant de le régler sur l'image, juste pour le sport. Mais aucun effet, bien sûr. –

18

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]; 
+0

cela fonctionne mais pour une raison quelconque, la qualité n'est pas comme prévu. pourquoi donc? – Esqarrouth

+0

@Esq Si vous étirez une image, elle perdra la définition et ne sera pas aussi haute que l'original –

+0

Que diriez-vous de l'image de neuf pièces? Cela peut résoudre le problème de qualité? – byJeevan

0

Swift 2.2: définir l'image de fond avec la couleur de fond

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) 
-1

de @pixelfreak, votre droite. L'instance UIColor avec motif d'image en couleur présente de sérieux problèmes de performances lors de l'affectation à la couleur de fond

cell.cellLabel.backgroundColor = UIColor(patternImage: UIImage(named: "background")!)