swift 3: Material-Design-Chip erstellen
Heyhey,
seit ein paar Tagen versuche ich den "Material-Design-Chip" zu erstellen, aber nur mit halbem Erfolg.
Der Versuch mit dem größten Erfolg, den ich hatte, besteht darin, eine Unterklasse aus "Button" zu erstellen (Button ist eine Unterklasse aus UIButton, die aus @ erstellt wurd cosmicmind in seinem MaterialDesign-Framework für swift).
Für die Leute, die nicht wissen, meine ich mit "Chips":Klicke hie
meine Beispiele:
Der einfache / nicht löschbare Chipimport UIKit
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
}
}
und um diese Schaltfläche zu erstellen:
let button = ChipButton()
button.title = "default chip"
view.layout(button).height(32).center(offsetY: -150)
er Kontakt-Chip / Icon-Chimport UIKit
import Material
class ChipIconButton: ChipButton {
/*override func prepare() {
super.prepare()
contentEdgeInsets = EdgeInsets(top: 0, left: 16, bottom: 0, right: 12)
}*/
public convenience init(image: UIImage?, title: String?){
self.init()
prepare(with: image, title: title)
}
private func prepare(with image: UIImage?, title: String?) {
self.image = image
self.title = title
self.imageView?.backgroundColor = UIColor.darkGray // this works
self.imageView?.cornerRadiusPreset = .cornerRadius4 // this works
self.imageView?.tintColor = Color.black // this doesn't work
self.imageEdgeInsets = EdgeInsets(top: 0, left: -8, bottom: 0, right: 12)
self.titleEdgeInsets = EdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
self.contentEdgeInsets = EdgeInsets(top: 0, left: 8, bottom: 0, right: 12)
}
}
hier will ich
Ändere die Größe des UIImageView auf die Höhe des Chips (das sind 32 Punkte)
I tried with self.imageView?.frame = CGRect(x: 50, y: 50, width: 32, height: 32) but nothing changed
Resize das UIImage etwas kleiner (auf 20 Punkte)
tintColor des UIImage ändern
I tryed with self.imageView?.tintColor = Color.black but nothing changed
er löschbare Chimport UIKit
import Material
class ChipDeleteableButton: ChipButton {
override func prepare() {
super.prepare()
self.image = #imageLiteral(resourceName: "ic_close_white_24px")
self.title = title
//self.frame = CGRect(x: 50, y: 50, width: 32, height: 32)
self.imageView?.backgroundColor = UIColor.darkGray
self.imageView?.cornerRadiusPreset = .cornerRadius4
self.imageView?.tintColor = Color.black
self.imageEdgeInsets = EdgeInsets(top: 0, left: self.frame.size.width, bottom: 0, right: 0)
self.titleEdgeInsets = EdgeInsets(top: 0, left: 0, bottom: 0, right: self.frame.size.width)
self.contentEdgeInsets = EdgeInsets(top: 0, left: 8, bottom: 0, right: 12)
}
}
Hier habe ich versucht, die Positionen der Beschriftung und mit imageEdgeInsets und titleEdgeInsets zu wechseln, aber self.frame.size.width gibt eine falsche Breite zurück (möglicherweise wegen AutoLayout, aber ich bin nicht sicher)
HilfHoffentlich kann mir jemand helfen!
ps. Ich bin ein kleiner Neuling bei swift / xcode