2017-12-13 4 views
0

Ich möchte die Rahmenfarbe einer uiview ändern, wenn sie gedrückt wird, und nach der Freigabe zur normalen Rahmenfarbe zurückkehren. Was ist die beste Vorgehensweise dafür?Wie ändere ich die Rahmenfarbe von UIview?

So etwas wie das Bild unten: enter image description here

+3

Sie können UIButton richtig verwenden? –

+0

Ist es möglich, als UIview zu tun? – ErikLm

+2

ja ist es möglich –

Antwort

4

nicht UITapGestureRecognizer anwenden. Sie können UILongPressGestureRecognizer

-Code verwenden:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let view = UIView.init(frame: CGRect.init(x: 30, y: 200, width: 100, height: 40)) 
    self.view.addSubview(view) 
    view.layer.borderColor = UIColor.black.cgColor 
    view.layer.borderWidth = 3 
    let tapForView = UILongPressGestureRecognizer(target: self, action: #selector(self.toChangeColor(recognizer:))) 
    tapForView.minimumPressDuration = 0.01 
    view.isUserInteractionEnabled = true 
    view.addGestureRecognizer(tapForView) 
} 

@objc func toChangeColor(recognizer:UILongPressGestureRecognizer) 
{ 
    // Apply logic for changing background color. 
    let view = recognizer.view 
    if recognizer.state == .began { 
     view?.layer.borderColor = UIColor.orange.cgColor 
     print("view began") 
    } 
    else if recognizer.state == .ended { 
     view?.layer.borderColor = UIColor.black.cgColor 
     print("view ended") 

    } 

} 

Das perfekt funktioniert.

+0

Das funktioniert perfekt, vielen Dank! – ErikLm

+0

Es ist mir eine Freude, Ihnen zu helfen –

0
let tapForView = UITapGestureRecognizer(target: self, action: #selector(self.ToChangeColor(recognizer:))) 
         tapForView.numberOfTapsRequired = 1 
         view.isUserInteractionEnabled = true 
         view.addGestureRecognizer(tapForView) 


@objc func ToChangeColor(recognizer:UITapGestureRecognizer) 
{ 
// Apply logic for changing background color 
} 
0

können Sie UILongPressGestureRecognizer verwenden Rahmenfarbe von UIView

hinzufügen Geste in viewDidLoad und in handleTap Funktion ändern können Sie Umrandungsfarbe ändern.

override func viewDidLoad() { 
    super.viewDidLoad() 

    let tap = UILongPressGestureRecognizer(target: self, action: #selector(self.handleTap(_:))) 
    customeview.addGestureRecognizer(tap) 

} 

@objc func handleTap(_ sender: UILongPressGestureRecognizer) { 
    print("Hello World") 

    if sender.state == .began 
    { 
     customeview.layer.borderColor = UIColor.yellow.cgColor 
     customeview.layer.borderWidth = 3 
    } 
    else if sender.state == .ended 
    { 
      customeview.layer.borderColor = UIColor.black.cgColor 
      customeview.layer.borderWidth = 3 
    } 
} 
+0

in Touch-Ende können Sie es nach hinten ändern –

Verwandte Themen