ich Zelle wollen die folgende programmatisch bauen: setzen individuelle Anzahl Tasten programmatisch
aber ich möchte programmatisch die benutzerdefinierten Schaltflächen hinzuzufügen. Hier habe ich keine Ahnung, wie die Knöpfe den Abstand zwischen ihnen respektieren und wie man die Höhe der Zelle ändert, wenn der nächste Knopf nicht in die gleiche "Zeile" passt.
i mit Constraints versucht:
import Material
class ChipButton: Button {
override func prepare() {
super.prepare()
cornerRadiusPreset = .cornerRadius5
backgroundColor = UIColor.lightGray
titleColor = Color.darkText.primary
pulseAnimation = .none
contentEdgeInsets = EdgeInsets(top: 0, left: 12, bottom: 0, right: 12)
isUserInteractionEnabled = false
titleLabel?.font = RobotoFont.regular
isOpaque = true
let constraintTop = NSLayoutConstraint(item: self, attribute: .top, relatedBy: .equal, toItem: superview, attribute: .top, multiplier: 1, constant: 4)
let constraintLeading = NSLayoutConstraint(item: self, attribute: .leading, relatedBy: .equal, toItem: superview, attribute: .leading, multiplier: 1, constant: 4)
superview?.addConstraint(constraintTop)
superview?.addConstraint(constraintLeading)
}
}
und I fügen die Tasten wie folgt aus:
for tag in item.tags {
let chip = ChipButton()
chip.title = tag.text
cell!.layout(chip).edges(top: 4, left: 4, bottom: 4, right: 4)
}
aber die Erklärung der constrainTop und constrainLeading einen Fehler führt und ohne die Einschränkungen die Tasten r auf übereinander und die Größe der Tasten r false.
Es sieht aus wie Sie geben die Tasten alle die gleiche oben und führende Einschränkung in Bezug auf die Superview. Das würde dazu führen, dass sie alle übereinander liegen. Sie müssen die Einschränkungen ändern, die mit der zuletzt hinzugefügten Schaltfläche in Zusammenhang stehen. – Hodson
Wenn Sie jedoch wissen, wo Sie sie platzieren möchten, und Sie den gesamten Abstand trotzdem ausarbeiten, dann brauchen Sie keine Einschränkungen und Sie können sie nur mit den korrekten x, y-Werten innerhalb der enthaltenden Ansicht – Russell
platzieren Wie wäre es mit einem 'UICollectionViewFlowLayout' https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/UsingtheFlowLayout/UsingtheFlowLayout.html – timaktimak