2017-09-18 3 views
0

Ich versuche, meine erste App in Swift zu vervollständigen, und ich traf das Problem. Ich habe einige Schaltflächen mit den Titeln und Hintergrundbild. Wenn Sie die Simulation auf verschiedenen Geräten ausführen, werden sie skaliert, so dass die Tittles den Rahmen der Schaltflächen verlassen. Es gibt keine „Dynamic Typ automatisch Font einstellen“ Kontrollkästchen in meinem Xcode Attribute Inspektor so dass ich die benutzerdefinierte UIButton Klasse gemacht und machte die inspectable varWie skaliert man die Schriftarten in einem Button

@IBInspectable var adjustFontSize : Bool { 
    set { titleLabel?.adjustsFontForContentSizeCategory = newValue } 
    get { return titleLabel!.adjustsFontForContentSizeCategory } 

aber does hilft und ich bekam „Automatische Anpassung der Schrift erfordert Verwenden eines dynamischen Textstils "warning

Wie kann ich also meinen Button-Titel so skalieren, dass er in den Button-Frame passt, wenn der Button Größe und Proportionen auf verschiedenen Geräten ändert?

+2

Glaubst du wirklich, dass diese Frage bisher nie bei Stack Overflow gestellt wurde? – matt

+0

Die Frage scheint sehr einfach, aber glauben Sie mir, ich habe alle Ressourcen durchsucht und keine funktionierenden Lösungen gefunden. Bitte geben Sie mir damit bitte – DimitryTheBlack

Antwort

-2

Versuchen Sie diese

button.titleLabel!.numberOfLines = 1 
button.titleLabel!.adjustsFontSizeToFitWidth = true 
button.titleLabel!.baselineAdjustment = .alignCenters 

aber für sie arbeiten, werden Sie entweder in Storyboard Einschränkung Schaltfläche Breite oder programmatisch festlegen müssen.

Dadurch wird die Titelgröße basierend auf der Breite der Schaltfläche geändert.

+0

Danke für die Antwort. Ich habe versucht, diese Einstellung vorzunehmen, aber es hilft nicht, wenn die Tasten horizontal skaliert werden. Der Titel geht aus dem oberen und unteren Rand des Buttons. Und es gibt keine "scaleToFitHeight" in Swift – DimitryTheBlack

+0

Willst du den Titel in 2 Zeilen laden, wie dies für mich funktioniert, und ich denke, das sollte funktionieren, da es den Text basierend auf der Breite wird. Oder die Höhe der Schaltfläche wäre zu klein im Vergleich zu der Breite, die Sie festlegen, sodass der Titel größer als die Höhe ist. –

+0

Ich habe nur einige Symbole auf einer Schaltfläche, so dass es keine Notwendigkeit in 2 Zeilen ( – DimitryTheBlack