2016-06-26 10 views
3

Ich arbeite an einer App, die eine Schaltfläche hat. Die Schaltfläche hat keinen Text, Bild oder Hintergrund.Wie man Knopfbild in swift ändert?

Also, was ich tun möchte, ist es ein Bild in der viewDidLoad Funktion zu geben.

Das ist, was ich habe:

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    tapButton.setImage("redTap.png", forState: UIControlState.Normal) 
} 

Aber ich habe einen Fehler, der sagt, dass ich nicht Zeichenfolge UIImage umwandeln kann.

Wie bekomme ich es zu arbeiten?

Ich habe versucht:

let image = UIImage(named: "redTap.png") 

tapButton.setImage(image, forState: UIControlState.Normal) 

ich es an die Arbeit bekommen haben, aber jetzt habe ich ein Problem.

Das Bild ist ein roter Text sein wird angenommen, aber es zeigt, blau.

konnte ich das Bild bekommen richtig zu zeigen, unter Verwendung:

let image = UIImage(named: imageColor[randNum])?.imageWithRenderingMode(.AlwaysOriginal) 
tapButton.setImage(image, forState: UIControlState.Normal) 

Was ich jetzt will, ist nicht auf die Schaltfläche hervorgehoben haben, wenn die Taste gedrückt wird. Ich habe ein paar andere Buttons, denen Bilder in xcode und nicht durch Code zugewiesen sind. Sie werden nicht hervorgehoben, wenn sie gedrückt werden.

So wie kann ich hervorheben loszuwerden, wenn die Taste gedrückt wird?

Antwort

8

Sie nicht ".png" brauchen.

Wenn ".imageWithRenderingMode (.AlwaysOriginal)" für Sie arbeitet: Um das gleiche Bild in verschiedenen Zuständen zu behalten, müssen Sie dasselbe Bild/Eigenschaften für die verschiedenen Zustände einstellen.

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Normal) 
    tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Highlighted) 
} 
+0

Es funktioniert jetzt aber anstatt einen roten Knopf zu zeigen, was das Bild ist, zeigt es ein blaues. Wie kann ich das Originalbild anzeigen? – user2303213

+0

Der Code wurde aktualisiert, um zu zeigen, wie er in verschiedenen Zuständen gleich bleibt. –

+0

Sie müssen keine zwei Zustände festlegen. Wenn nichts anderes gesetzt ist, verwenden alle Zustände das gleiche Bild wie für den "normalen" Zustand. – rmaddy

0

Let image = UIImage (genannt: "redTap.png") tapButton.setImage (Bild, .Normal)

+0

Ich habe versucht, aber es funktioniert immer noch nicht – user2303213

+0

Ist Ihr Bild in XCode image.assets Ordner? – impression7vx

0

Zuerst würde ich das Bild legen Sie innerhalb des Assets.xcassets Ordner gesucht. Ziehen Sie es einfach hinein. Dann können Sie es wie gewünscht aufrufen, indem Sie darauf doppelklicken. Sagen wir, dass es "redTap" heißt.

Für Code würden Sie setzen:

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    let redTapImage = UIImage(named: "redTap") 
    tapButton.setImage(redTapImage, forState: UIControlState.Normal) 
} 
0
let button = UIButton(type: .Custom) 
let image = UIImage(named:"redTap")?.imageWithRenderingMode(.AlwaysTemplate) 
button.setImage(image, forState: .Normal) 
button.tintColor = UIColor.redColor() 
0

gibt es eine einfache Lösung:

@IBOutlet var tapButton: UIButton!{ 
didSet{ 
let image = UIImage(named: imageColor[randNum]) 
tapButton.setImage(image, forState: UIControlState.Normal) 
} 

Abgesehen davon, im Attribut-Inspektor, Set-Taste Typ 'Benutzerdefiniert'

+0

Soll das verhindert werden, dass die Taste beim Drücken gedrückt wird? – user2303213

+0

Ich habe versucht, den von Ihnen bereitgestellten Code zu verwenden, aber jetzt erscheinen die Bilder nicht einmal. – user2303213

+0

Legen Sie den Button-Typ auf benutzerdefiniert fest? – wenqi

5

Swift 3

yourBtn.setImage(UIImage.init(named: "imagename"), for: .normal) 
1

jetzt (schnelle Ausgabe 3):

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal) 
    tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal) 
} 
Verwandte Themen