web-dev-qa-db-fra.com

Comment tracer une bordure autour d'un UILabel?

Existe-t-il un moyen pour UILabel de tracer une frontière autour de lui? Cela m’est utile pour déboguer l’emplacement du texte et voir l’emplacement et la taille réelle de l’étiquette.

130
Boon

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

#import <QuartzCore/QuartzCore.h>

myLabel.layer.borderColor = [UIColor greenColor].CGColor;
myLabel.layer.borderWidth = 3.0;
245
Vladimir

Voici certaines choses que vous pouvez faire avec UILabel et ses limites.

 enter image description here

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 également

66
Suragch

Version rapide:

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
16
Esqarrouth

Swift 3/4 avec @IBDesignable


Bien que presque toutes les solutions ci-dessus fonctionnent bien, je suggérerais 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
        }
    }
}
4
Vakas

Vous pouvez utiliser ce référentiel: GSBorderLabel

C'est assez simple: 

GSBorderLabel *myLabel = [[GSBorderLabel alloc] initWithTextColor:aColor
                                                     andBorderColor:anotherColor
                                                     andBorderWidth:2];
2
JAA

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
Sanjay Mali

Solution pour Swift 4:

votreLabel.layer.borderColor = UIColor.green.cgColor

1
Exitare

Utiliser une chaîne NSAttributedString pour vos étiquettes attributText est probablement votre meilleur choix. Découvrez cet exemple.

0
Bueno

cela dépend vraiment du nombre de bordures utilisées 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 produire une vue

0
chings228