【Swift】【Objective-C】比較リファレンス - UIFont

#【Swift】UIFont

##UIFont
UIFontクラスは、文字フォント、スタイルと文字サイズを管理するクラス

##UIFontのクラス階層
NSObject
↑
UIFont

##フォントの生成例
>Objective-C

~~~objective-C
// フォント名とサイズを指定した
UIFont *font = [UIFont fontWithName:@"＜フォント名＞" size:13];

// スタイルとサイズを指定した
UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
~~~

>Swift

~~~swift
// フォント名とサイズを指定して UIFont インスタンス作成
let font1 = UIFont(name: "Academy Engraved LET",size: 13.0)

// UIFontDescriptorとフォントサイズを指定して UIFont インスタンス作成
let descriptor = UIFontDescriptor(fontAttributes: [
    UIFontDescriptorNameAttribute: "HiraKakuProN-W3",
    ])
let font2 = UIFont(descriptor:descriptor,size:5)
 
// サイズを指定してシステムフォントの UIFont インスタンス作成
let font4 = UIFont.systemFontOfSize(13.0)
 
// サイズとウエイトを指定してシステムフォントの UIFont インスタンス作成
// Swift2
let font5_2 = UIFont.systemFontOfSize(13.0,weight: 5)
// Swift3
let font5_3 = UIFont.systemFont(ofSize: 13.0, weight: 5)
 
// 太字のシステムにサイズを指定して UIFont インスタンス作成
// Swift2
let font6_2 = UIFont.boldSystemFontOfSize(13.0)
// Swift3
let font6_3 = UIFont.boldSystemFont(ofSize: 13.0)
 
// イタリックのシステムフォントにサイズを指定して UIFont インスタンス作成
// Swift2
let font7_2 = UIFont.boldSystemFontOfSize(13.0)
// Swift3
let font7_3 = UIFont.boldSystemFont(ofSize: 13.0)
 
// monospace Digit のシステムフォントにサイズとウエイトを指定して UIFont インスタンス作成
// Swift2
let font8_2 = UIFont.monospacedDigitSystemFontOfSize(OfSize: 13.0,weight:UIFontWeightUltraLight)
// Swift3
let font8_3 = UIFont.monospacedDigitSystemFont(OfSize: 13.0,weight:UIFontWeightUltraLight)
 
// 作成済みのUIFontインスタンスからフォントサイズ指定して新しいインスタンスを作成
let font9 = UIFont(name: "Academy Engraved LET",size: 13.0)
let font10 = font9!.fontWithSize(13)
~~~

##UIFont 概要
フォントを利用する時に用いいるUIです。

・Import Statement
import UIKit
・Available
iOS 2.0 and later
・Inherits
NSObject

##イニシャライザー　(初期化)
###■ フォント名とサイズを指定して UIFont インスタンスを作成

####init(name:size:)　init(フォントの名前、フォントサイズ)

※ フォント名一覧を最後に記述しました。

>Objective-C

~~~Objective-C
UIFont *font = [UIFont fontWithName:@"＜フォント名＞" size:13];
~~~

>Swift

~~~swift
let font = UIFont(name: "＜フォント名＞",size: 13.0)
~~~

###■ UIFontDescriptorとフォントサイズを指定して UIFont インスタンスを作成
####init(descriptor descriptor: UIFontDescriptor,size pointSize: CGFloat)
init(ディスクリプタ、フォントサイズ)

UIFontDescriptor に関しては UIFontDescriptor のドキュメントを参照ください。

>Objective-C

~~~Objective-C
UIFontDescriptor *descriptor = [UIFontDescriptor fontDescriptorWithFontAttributes:
                                @{
                                 UIFontDescriptorNameAttribute:@"＜フォント名＞"
                                 }
];
UIFont *font = [UIFont fontWithDescriptor:descriptor size:5];
~~~

>Swift

~~~swift
let descriptor = UIFontDescriptor(fontAttributes: [
UIFontDescriptorNameAttribute: "＜フォント名＞",
])
let font = UIFont(descriptor:descriptor,size:5)
~~~

 主要なプロパティのみ掲載しています。
　上記「UIFontのクラス階層」にあるクラスのプロパティも使用できます。

##UIFontクラスメソッド
###■ 定義済みのフォントを指定して UIFont インスタンスを作成
####class func preferredFontForTextStyle(_ style: String) -> UIFont

※ 定義済みのフォントを最後に記述しました。
>Swift

~~~swift
let font = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
~~~

###■ サイズを指定してシステムフォントの UIFont インスタンスを作成
指定されたサイズの標準スタイルのフォントを返す

例：サイズ13の標準フォントを取得する
#### + (UIFont*) systemFontOfSize:(CGFloat)fontSize;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:13];
~~~

####class func systemFontOfSize(_ fontSize: CGFloat) -> UIFont
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(13.0)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 13.0)
~~~


###■ サイズとウエイトを指定してシステムフォントの UIFont インスタンスを作成
####class func systemFontOfSize(_ fontSize: CGFloat,weight weight: CGFloat) -> UIFont
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(13.0,weight: 5)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 13.0,weight: 5)
~~~

###■ 太字のシステムにサイズを指定して UIFont インスタンスを作成
指定されたサイズの太字スタイルのフォントを返す

例：サイズ20の太字フォントを取得する
#### + (UIFont*) boldSystemFontOfSize:(CGFloat)fontSize;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont boldSystemFontOfSize:20];
~~~

####class func boldSystemFontOfSize(_ fontSize: CGFloat) -> UIFont
>Swift2

~~~swift
let font = UIFont.boldSystemFontOfSize(20.0)
~~~
>Swift3

~~~swift
let font = UIFont.boldSystemFont(ofSize: 20.0)
~~~

###■ イタリックのシステムフォントにサイズを指定して UIFont インスタンスを作成
指定されたサイズの斜体スタイルのフォントを返す

例：サイズ13の斜体フォントを取得する
#### + (UIFont*) italicSystemFontOfSize:(CGFloat)fontSize;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont italicSystemFontOfSize:13];
~~~

####class func italicSystemFontOfSize(_ fontSize: CGFloat) -> UIFont
>Swift2

~~~swift
let font = UIFont.italicSystemFontOfSize(13.0)
~~~
>Swift3

~~~swift
let font = UIFont.italicSystemFont(ofSize: 13.0)
~~~

###■ monospace Digit のシステムフォントにサイズとウエイトを指定して UIFont インスタンスを作成
####class func monospacedDigitSystemFontOfSize(_ fontSize: CGFloat,weight weight: CGFloat) -> UIFont

UIFontWeightUltraLight に関しては UIFontDescriptor のドキュメントを参照ください。
>Swift2

~~~swift
let font12 = UIFont.monospacedDigitSystemFontOfSize(13.0,weight: UIFontWeightUltraLight)
~~~
>Swift3

~~~swift
let font12 = UIFont.monospacedDigitSystemFont(ofSize: 13.0,weight: UIFontWeightUltraLight)
~~~

###■ 実行している OS で利用可能なフォントファミリー一覧を配列で取得
使用できるフォントファミリー名を返す
#### + (NSArray*) familyNames;
>Objective-C

~~~Objective-C
NSLog(@"%@",[UIFont familyNames]);
~~~

####class func familyNames() -> [String]
>Swift

~~~swift
print(UIFont.familyNames())
~~~

###■ フォントファミリー名からフォント名を配列で取得
####class func fontNamesForFamilyName(_ familyName: String) -> [String]
>Swift

~~~swift
print(UIFont.fontNamesForFamilyName("Menlo"))
Menlo-Italic
Menlo-Bold
~~~

###■ デフォルト基準のフォントサイズを取得
ラベルで使用される標準的なサイズを返す
例：ラベルで使用される標準的なサイズを表示する
#### + (CGFloat) labelFontSize;
>Objective-C

~~~Objective-C
NSLog(@"%f",[UIFont labelFontSize]);
~~~

####class func labelFontSize() -> CGFloat
>Swift

~~~swift
print(UIFont.labelFontSize())
~~~

###■ デフォルト基準のボタンのフォントサイズを取得
ボタンで使用される標準的なサイズを返す
例：ボタンで使用される標準的なサイズを表示する
#### + (CGFloat) buttonFontSize
>Objective-C

~~~Objective-C
NSLog(@"%f",[UIFont buttonFontSize]);
~~~

####class func buttonFontSize() -> CGFloat
>Swift

~~~swift
print(UIFont.buttonFontSize())
~~~

###■ デフォルト基準のスモールシステムフォントのフォントサイズを取得
標準サイズよりも小さめのサイズを返す

例：標準サイズよりも小さめのサイズを表示する
#### + (CGFloat) smallSystemFontSize
>Objective-C

~~~Objective-C
NSLog(@"%f",[UIFont smallSystemFontSize])
~~~

####class func smallSystemFontSize() -> CGFloat
>Swift

~~~swift
print(UIFont.smallSystemFontSize())
~~~

###■ デフォルト基準のシステムフォントのフォントサイズを取得
標準サイズを返す

例：
#### + (CGFloat) systemFontSize;
>Objective-C

~~~Objective-C
NSLog(@"%@",[UIFont systemFontSize]);
~~~

####class func systemFontSize() -> CGFloat
>Swift

~~~swift
print(UIFont.systemFontSize())
~~~

 主要なメソッドのみ掲載しています。
　上記「UIFontのクラス階層」にあるクラスのメソッドも使用できます。

##インスタンスメソッド

###■ 作成済みのUIFontインスタンスからフォントサイズ指定して新しいインスタンスを作成
####func fontWithSize(_ fontSize: CGFloat) -> UIFont
>Swift

~~~swift
let font = UIFont(name: "Academy Engraved LET",size: 13.0)
let font2 = font.fontWithSize(13)
~~~

###■ インスタンスのディスクリプタを取得
####func fontDescriptor() -> UIFontDescriptor
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
let descriptor = font.fontDescriptor()
~~~
>Swift

~~~swift3
let font = UIFont.systemFont(ofSize: 16)
let descriptor = font.fontDescriptor()
~~~

##UIFont のプロパティ
| プロパティ名/(型)|読取専用|備考|
|:-----------------|:------------------:|:------------------|
|familyName/（NSString）|○|フォントファミリー名を取得する|
|fontName/（NSString）|○|フォント名を取得する|
|pointSize/（CGFloat）|○|フォントサイズを取得する|
|lineHeight/（CGFloat）|○|行の高さを取得する|
|capHeight/（CGFloat）|○|大文字の高さを取得する|
|xHeight/（CGFloat）|○|小文字「x」の高さを取得する|
|ascender/（CGFloat）|○|アセンダを取得する|
|descender/（CGFloat）|○|ディセンダを取得する|

###■ インスタンスに設定されているフォントファミリー名を取得
フォントファミリー名を取得する
例：
#### - (NSString *) familyName;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:16];
NSString *str = font.familyName;
~~~
####var familyName: String { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
print(font.familyName)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 16)
print(font.familyName)
~~~

###■ インスタンスに設定されているフォント名を取得
例
#### - (NSString *) fontName;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:16];
NSLog(@"%@",font.fontName);
~~~

####var fontName: String { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
print(font.fontName)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 16)
print(font.fontName)
~~~

###■ インスタンスに設定されているポイントのサイズを取得
例
#### - (CGFloat) pointSize;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:16];
NSLog(@"%f",font.pointSize);
~~~

####var pointSize: CGFloat { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(15)
print(font.pointSize)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 15)
print(font.pointSize)
~~~

###■ アセンダを取得
例
#### - (CGFloat) ascender;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:16];
NSLog(@"%f",font.ascender);
~~~

####var ascender: CGFloat { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
print(font.ascender)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 16)
print(font.ascender)
~~~

###■ ディセンダを取得
例
#### - (CGFloat) descender;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:16];
NSLog(@"%f",font.descender);
~~~

####var descender: CGFloat { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
print(font.descender)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 16)
print(font.descender)
~~~
###■ 行の高さを取得 
####var leading: CGFloat { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
print(font.leading)
~~~

>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 16)
print(font.leading)
~~~

###■ アルファベットの大文字の最大高さを取得
例
#### - (CGFloat) capHeight;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:16];
NSLog(@"%f",font.capHeight);
~~~

####var capHeight: CGFloat { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
print(font.capHeight)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 16)
print(font.capHeight)
~~~

###■ 小文字「x」の高さを取得
例
#### - (CGFloat) xHeight;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:16];
NSLog(@"%f",font.xHeight);
~~~
####var xHeight: CGFloat { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
print(font.xHeight)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 16)
print(font.xHeight)
~~~

###■ インスタンスに設定されているラインの高さのサイズを取得
例
#### - (CGFloat) lineHeight;
>Objective-C

~~~Objective-C
UIFont *font = [UIFont systemFontOfSize:16];
NSLog(@"%f",font.lineHeight);
~~~
####var lineHeight: CGFloat { get }
>Swift2

~~~swift
let font = UIFont.systemFontOfSize(16)
print(font.lineHeight)
~~~
>Swift3

~~~swift
let font = UIFont.systemFont(ofSize: 16)
print(font.lineHeight)
~~~

##定義済みフォント一覧（Font For Text Style）
>Swift

~~~swift
UIFontTextStyleTitle1
UIFontTextStyleTitle2
UIFontTextStyleTitle3
UIFontTextStyleHeadline
UIFontTextStyleSubheadline
UIFontTextStyleBody
UIFontTextStyleFootnote
UIFontTextStyleCaption1
UIFontTextStyleCaption2
UIFontTextStyleCallout
~~~

##フォントファミリー名一覧
（例なので、OSによって異なリマス）
フォントの種類
使用できるフォントには以下のようなフォントがあります。
>Swift

~~~swift
Academy Engraved LET
Al Nile
American Typewriter
Apple Color Emoji
Apple SD Gothic Neo
Arial
Arial Hebrew
Arial Rounded MT Bold
Avenir
Avenir Next
Avenir Next Condensed
Bangla Sangam MN
Baskerville
Bodoni 72
Bodoni 72 Oldstyle
Bodoni 72 Smallcaps
Bodoni Ornaments
Bradley Hand
Chalkboard SE
Chalkduster
Cochin
Copperplate
Courier
Courier New
Damascus
Devanagari Sangam MN
Didot
Euphemia UCAS
Farah
Futura
Geeza Pro
Georgia
Gill Sans
Gujarati Sangam MN
Gurmukhi MN
Heiti SC
Heiti TC
Helvetica
Helvetica Neue
Hiragino Mincho ProN
Hiragino Sans
Hoefler Text
Iowan Old Style
Kailasa
Kannada Sangam MN
Khmer Sangam MN
Kohinoor Bangla
Kohinoor Devanagari
Kohinoor Telugu
Lao Sangam MN
Malayalam Sangam MN
Marker Felt
Menlo
Mishafi
Noteworthy
Optima
Oriya Sangam MN
Palatino
Papyrus
Party LET
PingFang HK
PingFang SC
PingFang TC
Savoye LET
Sinhala Sangam MN
Snell Roundhand
Symbol
Tamil Sangam MN
Telugu Sangam MN
Thonburi
Times New Roman
Trebuchet MS
Verdana
Zapf Dingbats
Zapfino
~~~


---

## 関連記事

【Swift】【Objective-C】比較リファレンス - [Swift,Objective-C 比較まとめ](http://qiita.com/sunstripe/items/b08a9d7956998893fe65)
【About】(http://qiita.com/sunstripe) - サンストライプ

---

## 制作チーム：サンストライプ

[![sunstripe_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80600/322f2d60-f19d-af9e-2b6f-7290ca546848.png)](http://sunstripe.main.jp/)
http://sunstripe.main.jp/

(月１WEBコンテンツをリリースして便利な世の中を作っていくぞ！！ボランティアプログラマー/デザイナー/イラストレーター/その他クリエイター声優募集中！!)

### 地域情報 THEメディア
THE メディア 地域活性化をテーマに様々なリリース情報も含め、記事をお届けしてます！！
https://the.themedia.jp/

### ゼロからはじめる演劇ワークショップ
多様化の時代に向けて他者理解を鍛える

https://workshop.themedia.jp/

### プログラミングワークショップ・ウェブ塾の開講！！！
様々なテーマでプログラミングに囚われずに取り組んでいきます。
詳しくはこちら　↓　↓　↓　↓　↓　↓　↓　↓
[プログラミングサロン 月１だけのプログラミング学習塾](https://workshop.themedia.jp/posts/7057553?fbclid=IwAR32CfRQ7RvDOhvuogoSwqxDLMOU7Jvuzljlnx-TMc27qBPX1BnWsfLcBR8
)

### 協力応援 / 支援者の集い
## チーム：サンストライプ
#### プログラミングラボ
https://twitter.com/sunstripe2011

一緒にポートフォリオを作りませんか？現場の体験やそれぞれの立場から年齢関係なく作品を作りたい方々と一緒にチームを作って、作品を作っています。現場に行きたい人には、職場紹介や職場の体験や悩み相談なども受けております。
様々な職種からプログラミングの知識を得たい、デザインの知識を得たい、データーベースの知識を得たいという人が集まっております。
週１のミーティングにそれぞれの近況と作業報告して、たまにリモート飲み会などをしております！！

興味がある方は、DMに話しかけてみてください。

## トラストヒューマン
http://trusthuman.co.jp/
私たちは何よりも信頼､人と考えてます｡

｢コンサルティング｣と｢クリエイティブ｣の両角度から｢人材戦略パートナー｣としてトータル的にサポートします！！

キャリア教育事業
広域学習支援プラットフォーム『のびのび日和』
https://slc-lab.amebaownd.com/

#スポンサー募集