Ich habe eine Frage über eine Unterstreichung auf UITextField. Ich versuche, eine Unterstreichung mit Balken an jedem Ende wie unten gezeigt zu machen.UITextField benutzerdefinierte Unterstreichung in Swift
habe ich versucht, die folgende und diese ein. Es gibt keine Bar am rechten Ende.
extension UITextField {
func underline() {
let borderWidth = CGFloat(1.0)
let endBorderHeight = CGFloat(10.0)
let bottom = CALayer()
bottom.frame = CGRect(
x: 1,
y: self.frame.height - borderWidth,
width: self.frame.width - 2,
height: borderWidth)
bottom.borderWidth = borderWidth
bottom.borderColor = UIColor.lightGrayColor().CGColor
let leftEndBorder = CALayer()
leftEndBorder.frame = CGRect(
x: 0,
y: self.frame.height - endBorderHeight,
width: borderWidth,
height: endBorderHeight)
leftEndBorder.borderWidth = borderWidth
leftEndBorder.borderColor = UIColor.lightGrayColor().CGColor
print(bottom.frame.width)
let rightEndBorder = CALayer()
rightEndBorder.frame = CGRect(
x: self.frame.width - 1,
y: self.frame.height - endBorderHeight,
width: borderWidth,
height: endBorderHeight)
rightEndBorder.borderWidth = borderWidth
rightEndBorder.borderColor = UIColor.lightGrayColor().CGColor
self.layer.addSublayer(leftEndBorder)
self.layer.addSublayer(bottom)
self.layer.addSublayer(rightEndBorder)
self.layer.masksToBounds = true
}
}
Ich konnte die Bar auf der linken Seite machen, aber mit Mühe auf die rechte Seite zu machen wegen der falschen x Position des rightEndBorder wahrscheinlich?
Kann mir jemand sagen, was ich falsch mache ??
----- bearbeiten
Ich versuchte, die x-Position des rightEndBorder bis 200 und es gab mir die folgende einzustellen.
Aber wenn ich es auf 300 zu setzen versucht, ich es nicht mehr sehen.
----- bearbeiten
geprüft, ob das gesamte Textfeld auf dem Bildschirm angezeigt wurde.
----- bearbeiten
Es war, dass die vorderen und hinteren Einschränkungen, die die Breite des Textfield verändert, denke ich.
----- Lösung
Das Problem war, dass ich hatte führende und Einschränkungen für das Textfeld nachlauf und diese Einschränkungen geändert, um die Breite, nachdem der unline eingefügt wurde. Nachdem ich google gesucht hatte, dachte ich, dass ich die Unterstreichung machen musste, nachdem die Beschränkungen angewandt wurden, die in der Funktion viewDidLayoutSubviews() ist.
Ändern Sie die TextField-Breite nach dem Ausführen dieses Codes? –
@IanMoses Ich denke nicht, wenn die Einschränkungen auf dem Storyboard nicht seine Breite ändern ..Ich habe Textfield auf Storyboard gemacht und einfach die Unterstreichung in viewDidLoad() hinzugefügt. – eChung00
Können Sie Ihr Textfeld und Textfeld RightEndBorder X-Ursprünge nach der Initialisierung drucken. Was sind diese Werte? –