

storyboard上でAttributeStringを設定したいです。

`let attributedText = NSMutableAttributedString(string: “Hello, I am”,
attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 17)])`

とソースでAttributedStringを実装してましたが、storyboard上で設定できることに気づきました。  
しかし問題があってsystemFontが「FontFamily」に出てきません。これって何故なのでしょう。  
Textのタイプを「Plain」だと問題なく選択できますが、「Attributed」の時はどれを選択すればsystemFontとなるのでしょうか。


CC BY-SA 4.0
2019-06-25T12:32:42.127
56091
2022-05-13T08:03:35.313
14760
question
swift ios xcode storyboard
storyboard上でAttributeStringを設定したい


iOSのシステムフォントは、San Francisco Pro というフォントです。これはAppleがiOS, macOS,
tvOS用に作ったフォントで、Apple Font とも呼ばれています。

私の環境では、フォントを選択する小ウィンドウの"Collection"で"Recently Used"を選ぶと、"システムフォント
25.0"というのが出てきます。これを選ぶとシステムフォントになります。サイズも変えられます。なぜこれが出るようになったのかわかりませんが、もしアーサーさんの環境にもこれがあったら、それを選ぶと良いです。ないかもしれません。

Story Board 上で Attributed String
に設定できるフォントは、Xcodeの入っているmacOSにインストールされているフォントです。そのフォントは、macOSに最初から入っているFont
Bookというアプリで確認できます。そこに San Francisco はありません。

どうしても、Storyboardで使いたければ、Appleが配布しているSan FranciscoフォントをmacOSに追加すると良いと思います。  
フォントは、 <https://developer.apple.com/fonts/> でSF
Proとして配布されています。フォントをダウンロードしたら、Font Bookアプリでインストールできます。  
"SF Pro Display"を選べばシステムフォントを選んだ事になるはずです。

恐縮ですが、iOSでアプリを作って動作確認したわけではないので、実際にはご自身でご確認をお願いします。

なお、ご質問の内容からそれてしまいますが、Appleの推奨は、UIFont.preferredFontを使うことです。これはBodyとかTitleとかの名前で呼ばれるフォントセットで、AttributedでもStoryBoardで簡単に選べます。ユーザーが設定で指定した文字の大きさを反映して動的にサイズが変わってしまうので、扱いが難しいですが、ユーザビリティは向上すると思います。  
ご検討いただくと良いかと思います。


CC BY-SA 4.0
2019-06-26T15:35:53.073
56120
2019-06-26T15:35:53.073
34873
56091
answer


なぜシステムフォントが普通に選択できないのかは不明ですが、以下の方法で指定することができました。

  1. 新規のUILabelをどこかのViewに追加する 
    * この時点のフォントは "System 17.0"
  2. 追加したラベルのTextをAttributedに変更する 
    * この時点のフォントは "システムフォント 17.0"
  3. 「T」ボタンをクリックしてフォントダイアログを開く
  4. 任意のSizeを選択する
  5. 以下の画像の通り、右上の歯車マークをクリックして "Add to Favorites" を実行  
[![システムフォントをFavoritesに追加](https://i.stack.imgur.com/48n3q.png)](https://i.stack.imgur.com/48n3q.png)

    * サイズを選択していないと追加できないみたいです
  6. これで "Favorites" コレクションにシステムフォントが追加されるので、いつでも選べるようになる


CC BY-SA 4.0
2019-06-28T02:26:14.920
56168
2019-06-28T02:26:14.920
23829
56091
answer