前提
開発言語:Swift5
StoryboardにてSystemフォントを指定している箇所のみ
フォント名をプログラムにて一括で変えたいのですが変更方法がわからず困っています。
例えば
System以外のフォントファミリーを指定している場合はそのまま据え置きをしたく
Systemフォントを指定している箇所のみヒラギノに変更したい
UILabel.apperance()で設定すると全て変更される為、こちらだと意味がない。
chatGPTに聞いたところ、次の回答を得ました。
UILabel.appearance() を使用した場合、すべての UILabel のフォントが変更されます。このような場合は、特定の UILabel のインスタンスに対して直接フォントを変更することができます。例えば、Storyboard で System フォントを指定している UILabel の Outlet を作成し、それを使用してプログラムからフォントを変更することができます。
例:
Copy code
@IBOutlet weak var myLabel: UILabel!
myLabel.font = UIFont(name: "Hiragino Sans", size: myLabel.font.pointSize)
上記の例では、myLabel という Outlet を使用して、System フォントから Hiragino Sans にフォントを変更しています。また、同じサイズのフォントを使用しているため、変更前と変更後で表示サイズが変わりません。
ただし、この方法では、Storyboard 上で System フォント以外のフォントを指定している UILabel に対しては、変更が適用されません。この場合は、プログラムからその UILabel のインスタンスを取得し、直接フォントを変更する必要があります。また、全ての UILabel のインスタンスに対して、フォントを変更する必要がある場合は、UILabel.appearance() を使用することもできます。
Outleですと個別でやらないといけないですよね。
プロジェクト上のStoryboardのSystemフォントを使用しているところを一括で変えたいが
Storyboard上で別のフォントを指定しているところは変えたくないのです。
ちなみにStoryboard以外のインスタンスは変更は独自な為、必要ありません。
そこで全てのStoryboardのシステムフォントを使用しているのをHiraginoに一括変更したいってのが
やりたいことですね。
最悪はStoryboardのXMLファイルのSysytemフォントを使用している箇所を一括で
上書きするスクリプト方法などでもOKですが
プログラムで一括変更をAppDelegateなどで行えた方がありがたいです。
質問に書いてないことは伝わってないみたいですね。お父さんやお母さんに聞くように聞くのではなく、他人に伝わるよう書くのが良いと思います。
誤解された部分を参考に質問を編集してみましょう。
ChatGPT使って回答するのはいかがなのでしょうか?
運営からのお知らせを見てください。
Zuishin様
ご回答ありがとうございます、またご指摘ありがとうございます。
言い訳かもしれませんが質問の最初に
"StoryboardにてSystemフォントを指定している箇所のみフォント名をプログラムにて一括で変えたい"
と書かれているのが全てだと思います。
Zuishin様のご回答ですとOutletで変えたらいいよとのことですがそれだと個別に対応すると思いますので
質問の意図が伝わらなかった文章で申し上げにくいですが"一括"の意味の捉え違いかと思われます。
質問する立場でとても恐縮ですが今一度、良案をお待ちしております。
「StoryboardにてSystemフォントを指定している箇所のみフォント名をプログラムにて一括で変えたい」について ChatGPT で次のような回答が得られました。
StoryboardにてSystemフォントを指定している箇所のフォント名を一括で変えるには、次のようにします。
Storyboardを開き、Systemフォントを指定している箇所を選択します。
「Inspector」パネルで、「Font」セクションを開きます。
「System」を選択した状態で、「Custom」を選択します。
「Font」のドロップダウンリストから、新しいフォント名を選択します。
これにより、Storyboard上でSystemフォントを指定している箇所のフォント名が、新しいフォント名に一括で変更されます。
注意:この方法は、Storyboard上でSystemフォントを指定している箇所のみに適用されます。プログラムで指定しているフォント名は、この方法では変更されません。
もし、プログラムで指定しているフォント名も一括で変更したい場合は、その部分のコードも書き換える必要があります。例えば、次のようにすることで、プログラムで指定しているフォント名を新しいフォント名に変更することができます。
Copy code
let label = UILabel()
label.font = UIFont(name: "新しいフォント名", size: 17)
ただし、この方法では、プログラムで指定しているフォント名を変更する場合に限ります。Storyboard上で指定しているフォント名を変更する場合は、Storyboardを書き換える必要があります。