webentwicklung-frage-antwort-db.com.de

Wie zentriere ich ein Bild in einem UIButton, ohne in beide Richtungen in Swift zu strecken?

Ich mache eine benutzerdefinierte Tastatur und muss das Bild des Umschalt-Symbols innerhalb der Umschalttaste zentrieren. Das Bild ist 100px x 100px. 

Der Schaltflächenrahmen im Hochformat ist jedoch 36pt x 38pt und im Querformat 68pt x 32pt. Ich habe versucht, mit der Button-Image-Eigenschaft das Bild zu zentrieren. Dies tut es jedoch nicht.

Ich habe es selbst ausprobiert und die Bildkanteneinsätze auf (25,25,25,25) gesetzt, wobei das Bild in beiden Größen zentriert ist. Das Symbol wird jedoch zu klein, um zu sehen.

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

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

Ich mache den Knopf programmatisch. Und ich brauche den Button, um das Seitenverhältnis zu skalieren, d. H. 1:1. Seine maximale Breite oder Höhe ist immer an die Höhe des Knopfes selbst gebunden. Die Bildbreite/-höhe sollte maximal der Höhe der Schaltfläche entsprechen. Das Symbol sollte nicht in irgendeiner Weise verzerrt werden. Der Knopf selbst kann sich jedoch strecken.

Ich brauche das Bild, um es entsprechend dem Rahmen zu skalieren, aber das Seitenverhältnis beizubehalten. Außerdem kann der Maßstab verkleinert oder vergrößert werden, er sollte jedoch immer das Seitenverhältnis 1: 1 beibehalten.

Anregungen zur Lösung dieses Problems?

18
Ariel

Endlich kam eine Lösung durch. Sie müssen den Inhaltsmodus für das Bild im UIButton einstellen.

Die Lösung ist, 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
20
Ariel
  • Fügen Sie Ihrer Schaltfläche benutzerdefinierte Laufzeitattribute hinzu.

In dem Screenshot unter dem Wert 1 entspricht scaleAspectFit

imageView.ContentMode = scaleAspectFit

 enter image description here  enter image description here

9

Setzen Sie den Inhaltsmodus der Schaltfläche auf Center:

shiftButton.contentMode = .Center
3
Viktor Simkó

Wenn Sie ein Storyboard verwenden, vergewissern Sie sich, dass für den Schaltflächentitel nichts festgelegt ist.

2
Scott Zhu

Ich konnte das Bild zentrieren, indem ich die Inhaltseinsätze mit dem Größeninspektor auf dem Storyboard auf 0 setzte:

 enter image description here

2
Justin Vallely