2016-08-01 15 views
9

Ich mache eine benutzerdefinierte Tastatur und ich muss das Bild des Shift-Symbols in der Shift-Taste zentrieren. Das Bild ist 100px x 100px.Wie zentriert man ein Bild in einem UIButton ohne in beide Richtungen in Swift zu dehnen?

Allerdings ist der Tastenrahmen im Hochformat 36pt x 38pt, und im Querformat ist es 68pt x 32pt. Ich habe versucht, Button Bild Einfüge-Eigenschaft zu verwenden, um das Bild zu zentrieren. Es tut dies jedoch nicht.

Ich probierte mich selbst und setzte die Bildkanteneinsätze auf (25,25,25,25), die Bildmitte in beiden Größen. Das Symbol wird jedoch zu klein zum Anzeigen.

shiftButton.setImage(UIImage(named: "shift"), forState: .Normal) 

shiftButton.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,0) 

Ich mache den Knopf programmatisch. Und, ich brauche den Knopf, um sein Seitenverhältnis beizubehalten, d.h. 1:1. Seine maximale Breite oder Höhe ist immer an die Höhe des Knopfes gebunden. Die Bildbreite/-höhe sollte maximal der Höhe der Schaltfläche sein. Und es sollte nicht in irgendeiner Weise das Symbol verzerren. Die Schaltfläche selbst kann jedoch gedehnt werden.

Ich brauche das Bild, um entsprechend Knopfrahmen zu skalieren aber sein Seitenverhältnis beizubehalten. Und es kann abwärts skalieren oder skalieren, sollte aber immer das Seitenverhältnis 1: 1 beibehalten.

Irgendwelche Vorschläge zur Lösung dieses Problems?

Antwort

9

schließlich durch eine Lösung kam. Sie müssen den Inhaltsmodus für das Bild innerhalb der UIButton festlegen.

Die Lösung besteht darin, die contentMode der Image zu aktualisieren, wenn Sie ein Vordergrundbild innerhalb einer Schaltfläche zusammen mit der contentMode der UIButton verwenden.

shiftButton.contentMode = .Center 
shiftButton.imageView?.contentMode = .ScaleAspectFit 
+0

.center und .scaleAspectFit für den neuesten Swift (jetzt mit lowCameCase) –

3

den Modus der Taste Center Inhalt Set:

shiftButton.contentMode = .Center 
+0

ich es schon versucht haben. Dies scheint in diesem speziellen Fall nicht zu funktionieren. Vielleicht, weil das Bild größer als die Größe des Rahmens ist. – Ariel

+0

Wenn sich die Tastenbreite zu dehnen beginnt, scheint sich das Bild ebenfalls zu dehnen. Und dieses Verhalten ist überhaupt nicht erwünscht. – Ariel

+0

Haben Sie '.ScaleAspectFit' probiert? –

0

konnte ich das Bild zu zentrieren, indem sie die Inhalte Einsätze auf 0 setzen die Größe Inspektor auf dem Storyboard mit:

enter image description here

0
  • User Defined Runtime-Attribute auf Ihre Schaltfläche Hinzufügen.

Im Screenshot unten Wert 1 gleich scaleAspectFit

imageView.ContentMode = scaleAspectFit 

enter image description here enter image description here