質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
button

HTMLで用いる<button>タグです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

Q&A

解決済

2回答

7676閲覧

【Swift】UIButtonのコード上でのFontサイズ変更

tasmicsy

総合スコア13

button

HTMLで用いる<button>タグです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

0グッド

0クリップ

投稿2021/12/10 05:22

前提・実現したいこと

Swift storyboardでUIButtonを作成し、ボタンに表示する文をコードで指定したい。

発生している問題・エラーメッセージ

Swift

1UIButton.setTitle("文章", for: .normal) 2```で文章を設定すると、文章は変更されますが、フォントサイズなどのスタイルが初期化されてしまいます。 3 4### 試したこと 5```Swift 6UIButton.titleLabel?.font

などを試しましたが、特に変化ありません。どうすればスタイル変更できるのでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Xcode13より、UIButtonには新しい設定方法(UIButton.Configuration)が追加されており、Xcode13のStoryboardで新しくUIButtonを貼り付けると、新しい設定方法を使用したボタンが貼り付けられます。

新しい設定方法が使用されたUIButtonは、StoryboardのUIButtonの設定でStyleの項目が「Plain」「Gray」「Tinted」「Filled」のいずれかになっています。ここのStyleの設定を「Default」にすると、従来通りの設定方法になり、 setTitle でタイトルを変更しても、Storybordで設定したフォントサイズが維持されます。

新しい設定を使用したボタンに対して setTitleメソッドでタイトルを変更すると、タイトル自体は変更できますが、フォントの設定がリセットされ、 titleLabel?.font にフォントを設定してもフォントの変更ができなくなりました。(おそらく新しい設定方法と古い設定方法が混在した時の動作は保証されないということなのだろうと思います。)

新しい設定方法では、ボタンのタイトルをメインタイトルとサブタイトルの2行で表示できるようになっていて、後でボタンのタイトルを変更する時は、

swift

1button.configuration?.title = "Title" 2button.configuration?.subtitle = "SubTitle"

のように、 UIButton.Configuration のプロパティを変更します。ただ、これを設定するとフォントの設定がリセットされてしまうようで、上記の設定を実施した後、

swift

1button.titleLabel?.font = UIFont.systemFont(ofSize: 48) 2button.subtitleLabel?.font = UIFont.systemFont(ofSize: 48)

のようにすれば、それぞれのタイトルのフォントも設定できました。

2022/12/25追記

上記の回答では、configurationの設定を実施した後にtitleLabelのfontを変更したらうまくいったこと説明しましたが、やはりそれは新しい設定方法と古い設定方法を混在させた方法になるので安定しないようです。タイトルを再設定したりすると、結局うまく動作できなくなることを確認しました。

UIButton.Configuration を使用してボタンを設定した場合は、 UIButton.Configuration の設定で表示フォントを変更するのが本来のやり方だと思います。

https://stackoverflow.com/a/73360912

の回答が参考になりますが、下記のようにconfigurationのtitleTextAttributesTransformerを使ってフォントサイズを設定すると、安定して動作するようです。

swift

1button.configuration?.titleTextAttributesTransformer = UIConfigurationTextAttributesTransformer { incoming in 2 var outgoing = incoming 3 outgoing.font = UIFont.systemFont(ofSize: 48) 4 return outgoing 5}

投稿2021/12/15 07:51

編集2022/12/25 02:34
TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tasmicsy

2021/12/17 00:35

ご回答いただきありがとうございます!そのような変更があったのですね。無事に治すことが出きました、ありがとうございました。
guest

0

こんな感じで指定できそうです。

swift

1UIButton.titleLabel?.font = UIFont(name: "Academy Engraved LET",size: 13.0)

投稿2021/12/15 04:12

zundaa

総合スコア101

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tasmicsy

2021/12/17 00:35

ご回答いただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問