Comment dessiner une bordure autour D'un UILabel?

Y a-t-il un moyen pour UILabel de dessiner une bordure autour de lui? Ceci est utile pour moi de déboguer le placement du texte et de voir le placement et la taille de l'étiquette.

125
demandé sur Vladimir 2010-02-22 17:49:49

9 réponses

Vous pouvez définir la bordure de label via sa propriété CALayer sous-jacente:

#import <QuartzCore/QuartzCore.h>

myLabel.layer.borderColor = [UIColor greenColor].CGColor;
myLabel.layer.borderWidth = 3.0;
237
répondu Vladimir 2013-02-25 17:06:30

Voici quelques choses que vous pouvez faire avec UILabel et de ses frontières.

entrez la description de l'image ici

Voici le code pour ces étiquettes:

import UIKit
class ViewController: UIViewController {

    @IBOutlet weak var label1: UILabel!
    @IBOutlet weak var label2: UILabel!
    @IBOutlet weak var label3: UILabel!
    @IBOutlet weak var label4: UILabel!
    @IBOutlet weak var label5: UILabel!
    @IBOutlet weak var label6: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        // label 1
        label1.layer.borderWidth = 1.0

        // label 2
        label2.layer.borderWidth = 5.0
        label2.layer.borderColor = UIColor.blue.cgColor

        // label 3
        label3.layer.borderWidth = 2.0
        label3.layer.cornerRadius = 8

        // label 4
        label4.backgroundColor = UIColor.cyan

        // label 5
        label5.backgroundColor = UIColor.red
        label5.layer.cornerRadius = 8
        label5.layer.masksToBounds = true

        // label 6
        label6.layer.borderWidth = 2.0
        label6.layer.cornerRadius = 8
        label6.backgroundColor = UIColor.yellow
        label6.layer.masksToBounds = true
    }
}

Notez que dans Swift il n'est pas nécessaire d'importer QuartzCore.

Voir aussi

64
répondu Suragch 2017-05-23 10:31:38

Version Swift:

myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.greenColor().CGColor

Pour Swift 3:

myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.green.cgColor
15
répondu Esqarrouth 2016-11-17 08:34:13

Vous pouvez utiliser ce repo: GSBorderLabel

C'est assez simple:

GSBorderLabel *myLabel = [[GSBorderLabel alloc] initWithTextColor:aColor
                                                     andBorderColor:anotherColor
                                                     andBorderWidth:2];
2
répondu JAA 2012-12-16 22:51:11

Swift 3/4 avec @IBDesignable


Alors que presque toutes les solutions ci-dessus fonctionnent bien, mais je suggère une classe personnalisée @IBDesignable pour cela.

@IBDesignable
class CustomLabel: UILabel {

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */

    @IBInspectable var borderColor: UIColor = UIColor.white {
        didSet {
            layer.borderColor = borderColor.cgColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 2.0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            layer.cornerRadius = cornerRadius
        }
    }
}
1
répondu Vakas 2017-10-13 05:45:11

Propriétés UILabel borderColor, borderWidth, cornerRadius dans Swift 4

@IBOutlet weak var anyLabel: UILabel!
   override func viewDidLoad() {
        super.viewDidLoad()
        anyLabel.layer.borderColor = UIColor.black.cgColor
        anyLabel.layer.borderWidth = 2
        anyLabel.layer.cornerRadius = 5
        anyLabel.layer.masksToBounds = true
}
1
répondu Sanjay Mali 2018-05-29 17:14:18

Solution pour Swift 4:

YourLabel.couche.borderColor = UIColor.vert.cgColor;

1
répondu Exitare 2018-06-21 01:55:53

Cela dépend vraiment du nombre de pensionnaires utilisés dans votre vue, parfois, ajoutez simplement un UIVIEW dont la taille est un peu plus grande pour créer la bordure . la méthode est plus rapide que de produire une vue

0
répondu chings228 2013-03-06 05:46:59

Utiliser une chaîne NSAttributedString pour vos étiquettes attributedText est probablement votre meilleur pari. consultez cet exemple.

0
répondu Bueno 2017-05-23 12:10:48