Lösung mit @IBDesignable und Swift 3
Zum einen können Sie @IBDesignable für UITextField wie diese erstellen.
@IBDesignable extension UITextField{
@IBInspectable var setImageName: String {
get{
return ""
}
set{
let imageView: UIImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
imageView.image = UIImage(named: newValue)!
self.rightView = imageView
self.rightViewMode = UITextFieldViewMode.always
}
}
Hinweis: Sie müssen sein schreiben bekommen und gesetzt Punkte für @IBInspactable Block weil Swift hat warnen Getter und Setter zusammen anzuwenden. Wir müssen die get-Anweisung nicht verwenden, daher wurde eine leere Zeichenfolge zurückgegeben. Auch der Attributname enthält Button, aber nicht verwirren, es ist ein Fehler.
Dann klicken Sie auf den UITextField auf Storyboard und den spesific Bild Namen das setAButtonImageName Attribut geben.
Dann werden Sie das folgende Ergebnis
Die andere Situation ist die rightView schaffen bekommen wie rechten Rand
Hier ist der Screenshot scheint hat.
können Sie einen UIView als Behälter als die UIImageView in die dieser UIView hinzufügen verwenden. Hier müssen Sie den rechten Rand, die Breite und die UIImageViews 'Breite der Containeransicht berechnen.
@IBInspectable var setImageName: String {
get{
return ""
}
set{
let containerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width:50, height: self.frame.height))
let imageView: UIImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
imageView.image = UIImage(named: newValue)!
containerView.addSubview(imageView)
imageView.center = containerView.center
self.rightView = containerView
self.rightViewMode = UITextFieldViewMode.always
}
}