• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

[Swift] Button zufällig positionieren

MacAlex2015

Macoun
Registriert
01.04.15
Beiträge
122
Hallo iOS-Xcode-Profis,

bisher eher Audio-Anwendungen getestet, möchte für meinen Sohn eine kleine App programmieren, bei der ein Button nach dem "Klick" darauf seine Position zufällig ändert.

Da es unter iOS nicht mit einfachen Button.x und Button.y getan ist, sondern wohl über die Constraints programmiert werden muss, habe ich damit so einiges getestet, komme aber aktuell nicht weiter. Ich denke, es hängt daran, dass ich nach jedem Klick einen neuen Constraint kreiere, aber die bisherigen nicht lösche?
Wie kann ich das lösen?

Code:
@IBAction func clickButton(_ sender: UIButton) {
        let y_zufall = CGFloat(Int(arc4random_uniform(400)) - 200)
        NSLayoutConstraint(item: catchButton, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: y_zufall).isActive = true
    }

Geht das irgendwie mit dem "pop"-Command?

Vielen Dank
Alexander
 
Du brauchst keine neuen Constraints erzeugen. Man kann einfach bei den bestehenden Constraints den Wert der Constant-Property ändern. Nach der Änderung muss man dann nur dem View per layoutIfNeeded() sagen, dass die Änderungen auch angewendet werden.
 
Danke, MacApple!
Das wäre wunderbar, wenn das doch so einfach möglich ist. Hast du den Befehl sofort griffbereit?
Sonst wühle ich mich auch gerne durch google.