web-dev-qa-db-de.com

Wie zeichnet man eine UILabel-Grenze?

Gibt es eine Möglichkeit für UILabel, eine Grenze um sich herum zu zeichnen? Dies ist hilfreich für mich, um die Textplatzierung zu debuggen und die Platzierung und die Größe des Labels zu sehen.

130
Boon

Sie können den Rahmen des Labels über die zugrunde liegende Eigenschaft CALayer festlegen:

#import <QuartzCore/QuartzCore.h>

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

Hier sind einige Dinge, die Sie mit UILabel und seinen Grenzen machen können.

 enter image description here

Hier ist der Code für diese Labels:

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
    }
}

Beachten Sie, dass in Swift keine QuartzCore importiert werden muss.

Siehe auch

66
Suragch

Schnelle Version:

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

Für Swift 3:

myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.green.cgColor
16
Esqarrouth

Swift 3/4 mit @IBDesignable


Fast alle oben genannten Lösungen funktionieren zwar gut, aber ich würde eine @IBDesignable-benutzerdefinierte Klasse dafür vorschlagen.

@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

Sie können dieses Repo verwenden: GSBorderLabel

Es ist ganz einfach: 

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

UILabel-Eigenschaften borderColor, borderWidth, cornerRadius in 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

Lösung für Swift 4:

yourLabel.layer.borderColor = UIColor.green.cgColor

1
Exitare

Die Verwendung einer NSAttributedString-Zeichenfolge für die Beschriftungen attributedText ist wahrscheinlich die beste Wahl. Schau dir dieses Beispiel an.

0
Bueno

es hängt wirklich davon ab, wie viele Rahmen in Ihrer Ansicht verwendet werden. Manchmal fügen Sie einfach eine UIVIEW hinzu, deren Größe etwas größer ist, um den Rand zu erstellen. Die Methode ist schneller als eine Ansicht zu erzeugen

0
chings228