Ich habe eine Viewcontroller mit 3 UIButtons
, die die gleiche Y-Position haben aber 20px getrennt voneinander horizontal. Wenn eine Schaltfläche ausgewählt ist, möchte ich eine Linie unter der Schaltfläche zeichnen. Ich habe versucht, nur das Unterstreichungsattribut hinzuzufügen, aber die Zeile ist nicht wirklich anpassbar. Ich habe die Schaltflächen oben auf einer UIImageView, die in einer Unterklasse von UIView I namens SectionView enthalten ist.Zeichnung Unterstreichung für UIButton ist hinter Ansichten versteckt
Meiner Ansicht Controller Ich habe die folgende Funktion, die aufgerufen wird, wenn eine Taste gedrückt wird:
@IBOutlet weak var sectionView: SectionView!
func sectionButtonPressed(sender: UIButton) {
self.sectionView.selectedButton = sender
self.sectionView.setNeedsDisplay()
}
In meinem UIView Unterklasse, habe ich die folgenden:
class SectionView: UIView {
var selectedButton: UIButton?
override func drawRect(rect: CGRect) {
let linePath = UIBezierPath()
linePath.moveToPoint(CGPoint(x:(self.selectedButton?.frame.origin.x)! - 3, y: (self.selectedButton?.frame.origin.y)! + 35))
linePath.addLineToPoint(CGPoint(x: (self.selectedButton?.frame.origin.x)! + (self.selectedButton?.frame.width)! + 3, y: (self.selectedButton?.frame.origin.y)! + 35))
linePath.closePath()
UIColor.purpleColor().set()
linePath.stroke()
linePath.fill()
}
}
ich bekommen kann die Linie, um an der Position und Länge zu zeichnen, die ich wünsche, aber es ist unter dem UIButton und UIImageView. Wie kann ich es oben erscheinen lassen?
Was sind die Vorteile der Verwendung einer 'CALayer 'vs a' UIView' – Brosef
Nur eine Alternative zu UIView und scheint ein direkter Weg zu sein – Gokul