Ok, das scheint mehr als alles andere ein mathematisches Problem zu sein - ich möchte eine bestimmte Anzahl von gleich verteilten Subviews (keine eingestellte Lücke) über eine horizontale Distanz erzeugen. Ich möchte einen Rand auf jeder Seite festlegen und verteilt die Ansichten gleichmäßig über den verbleibenden Platz. Das ist, was ich habe:Swift: Programmatisch gleiche Ansichten über eine Entfernung?
func spawnNodes(num: Int, margin: CGFloat)
{
let width = self.bounds.width - 2*margin
let length = Int(width)/num //20
var lastPos = margin
for i in 1...num {
let n = Node(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
n.center = CGPoint(x: margin+(CGFloat(i*length)/2), y: self.bounds.height*0.2)
lastPos = n.center.x
self.addSubview(n)
}
Und das gleich verteilt, aber sie nehmen den ganzen Raum nicht auf:
Was stimmt hier nicht? Wie kann ich auf jeder Seite einen Abstand halten und die Ansichten gleichmäßig verteilen?
TAKE 2:
for i in 1...num {
let n = Node(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
let space = (width - CGFloat(num)*n.bounds.width)/CGFloat(num-1)
n.center = CGPoint(x: lastPos+space+n.bounds.width+(CGFloat(i*length)/2), y: self.bounds.height*0.2)
lastPos = n.center.x
self.addSubview(n)
}
Nicht berechnen 'length' - berechnen den Abstand. Sie haben 'n-1' Leerzeichen zwischen' n' Objekten. 'spacing = (Breite - n * Objektbreite)/(n-1)'. Erhöhen Sie nun 'lastPos' um' spacing + objectWidth' – Paulw11
Können Sie das als Beispiel schreiben? – skyguy
Ok. In der obigen Bearbeitung habe ich versucht, Ihrem Rat zu folgen, aber es hat nicht funktioniert. Ich schätze es, wenn Sie eine Antwort – skyguy