SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
potatotips #11 
小学生でも分かった気になる 
iOS8のSize Class 
株式会社キュリオシティソフトウェア 
今城 善矩(@yimajo)
今日Size Classについて話すこと 
前編 
Size Classを用いてiPhone/iPadで同じStoryboardを使う方法 
後編 
Size Classの概念が難しい件について
前編: 
Size Classを用いてiPhone/iPadで同じ 
Storyboardを使う方法
例えばこういうデザインの時 
iPhone iPad
例えばこういうデザインの時 
iPhone iPad 
iPadのみのLabel配置したい!
例えばこういうデザインの時 
iPhone iPad 
iPadのみのLabel配置したい! 
iPadはFont大きくしたい!
例えばこういうデザインの時 
iPhone iPad 
iPadのみのLabel配置したい! 
iPadはFont大きくしたい! 
iPadは下の方を持ちづらい、ボタンが下すぎると嫌なのでマージン大きく!
これがSize Classで簡単にできて 
分かった気になるので 
1つずつやり方を説明する
前提 
Portraitのみでデバイス全画面 
のrootViewとして対応する 
iPhoneはSize Class w:C h:Rと 
して分類され 
iPadはSize Class w:R h:Rとし 
て分類される
Xcode6のInterface BuilderでSize Class 
によって出来る用になった事2つ 
1. UIコンポーネントをSize Class別に設置 
2. 一つのUIコンポーネントに対してSize Class別に設定
Xcode6のInterface BuilderでSize Class 
によって出来る用になった事2つ 
1. UIコンポーネントをSize Class別に設置 
2. 一つのUIコンポーネントに対してSize Class別に設定 
Font(等のプロパティ)を設定 
大きさや位置(Frame)を設定 
Auto Layoutを設定が出来るようになった
UIコンポーネントをSize Class 
ごとに配置する 
UIコンポーネントのFrameで 
+を押し 
w:R h:Rのinstalledのみを 
チェック☑すると 
iPadのみで存在する 
UILabelになる
Size ClassごとにFont設定 
UILabelの+をクリックし 
w:R h:Rの設定を追加すると 
iPad用のFontが 
設定される
Size ClassごとにFrameを設定するには 
これは+や☑installedは無く 
IB Design Viewの下で 
Size Classを切り替え 
その状態で指定した 
FrameがSize Classごとの 
設定となる 
iPhone iPad
結果こういう感じになる 
iPhone iPad
結果こういう感じになる 
iPhone iPad 
iPadのみUILabelをinstalled
結果こういう感じになる 
iPhone iPad 
iPadのみUILabelをinstalled 
iPadのみFontを75pt
結果こういう感じになる 
iPhone iPad 
iPadのみUILabelをinstalled 
iPadのみFontを75pt 
iPadはFrame{(x:100,y:585),(w:400,h:140)}でそれに合うAutoLayoutを指定
注意点 
iPhoneのUILabelと 
iPadのUILabelを別々に作り 
共通のViewControllerのIBOutletに繋ぐと 
片方が切り離されるから注意しよう 
(共通のUILabelにしてFrameを別にすべき)
今の例は 
Portraitのみの画面だったため 
わりと説明がしやすかった
Size Classなんとなく分かった気になった 
はず 
後半でさらに補足する
後半: 
Size Classの概念が難しい件について
お前らがなんで 
Size Classを理解できない理 
解出来ないと嘆くかについて
ネット上に公開されている 
Size Classの記事はSize Classの 
必要性が感じられないし 
Adaptivityとかいう奴が意味不明
原因として 
1.画面の回転の話を持ちだされる(iOS8で回 
転検出が変わったことに起因) 
2. iPhone6+のために作られたような記載 
3.Compact,Regularってのが分かりづらい
1. 画面の回転に関係あるの? 
回転自体はSize Classと直接は関係がなく、 
縦/横画面でのUIコンポーネントの“配置”に 
関係している。 
回転自体はAdaptivityに関係があり、 
Size ClassはAdaptivityのために必要なんだけど 
それはとりあえず一旦忘れよう。
2. iPhone6+のためにある? 
iPhone6+はLandscape時に特殊だが、 
iPhone6+のためだけにあるわけでは 
ない。
3.Compact, Regularが分かりづらい 
CompactもRegularも何を基準としてそのよう 
な名前になっているのかが不明瞭 
この名前について深く考えずに 
サイズ分類のための記号だと 
思うほうが手っ取り早い
Size ClassのC,Rについて話題になると出てくるあの表… 
Portrait 
Width 
Portrait 
Height 
Landscape 
Width 
Landscape 
Height 
iPhone4s 
iPhone5/5s 
iPhone6 
Compact Regular Compact Compact 
iPhone6+ Compact Regular Regular Compact 
iPad Regular Regular Regular Regular 
正しいがこの表の見せ方は分かりづらい…
一旦、Landscapeのことを忘れよう 
Portrait 
Width 
Portrait 
Height 
Landscape 
Width 
Landscape 
Height 
iPhone4s 
iPhone5/5s 
iPhone6 
Compact Regular Compact Compact 
iPhone6+ Compact Regular Regular Compact 
iPad Regular Regular Regular Regular 
そうすると全てのiPhoneはw:C h:Rになり 
iPadはw:R h:Rに区別できる
シンプルに書くとこうなる 
Portrait 
Width 
Portrait 
Height 
iPhone4s 
iPhone5/5s 
iPhone6/6+ 
Compact Regular 
iPad Regular Regular 
iPhone -> w:C h:R 
iPad -> w:R h:R
注意点 
現状発売されている 
iPhoneはw:C h:RでiPadはw:R h:Rだが、 
将来的にw:R h:RなiPhoneが出ない 
という確証はない! 
(XcodeからシミュレータをResizable iPhoneを 
選択するとw:R h:RなiPhoneも実行できる)
ただし 
w:R h:R なiPhoneが出たとして 
Appleのマーケテティング上それが 
iPhoneっていう名前なだけで 
そのようなiPhoneは 
iPadのレイアウトと同じになったほうが 
ユーザーにとっては好ましい気がする…
つまり 
Size Classはマーケティング上の識別子である 
iPhone,iPadの区別でレイアウトを考えるのでなく 
サイズ分類でレイアウトを変えられるように 
考えられた仕組みなんじゃないの? 
それで達成したいのがAdaptive User Interface
まとめ 
Size Class+IBでiPad用のレイアウトを手軽にできる、が 
本質的にはiPhone/iPadを識別したいわけなくSizeのClassで分 
類してレイアウトを分けるもの 
Size ClassやAuto Layoutなどの手段によってレイアウトをユー 
ザーに最適にするのがAdaptivity 
現状まだAdaptive User Interfaceはデザイナが把握していない 
だろうが、iPadのPortraitはw:R h:Rとしてレイアウトを実装し 
といても将来的に問題ない(本質には外れない)はず
参考 
Adaptive User Interfaces 
https://developer.apple.com/design/adaptivity/ 
iOS Human Interface Guidelines : Adaptivity and Layout 
https://developer.apple.com/library/ios/documentation/userexperience/conceptual/ 
mobilehig/LayoutandAppearance.html 
Size Classes Design Help 
https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/ 
AboutAdaptiveSizeDesign.html#//apple_ref/doc/uid/TP40014436-CH6-SW1
宣伝 
株式会社キュリオシティソフトウェアではiOSアプリ開発のお仕事を募集しております 
カメラアプリやチャットアプリなどユーザーの日常に近いアプリ開発を得意としています 
デザインから請け負う事もできますので 
お気軽にお問い合わせください 
http://curiosity.co.jp/

Más contenido relacionado

Más de 今城 善矩

Más de 今城 善矩 (8)

まだSwiftで消耗してるの?
まだSwiftで消耗してるの?まだSwiftで消耗してるの?
まだSwiftで消耗してるの?
 
iOSアプリ開発の現場で訊いてきたtips
iOSアプリ開発の現場で訊いてきたtipsiOSアプリ開発の現場で訊いてきたtips
iOSアプリ開発の現場で訊いてきたtips
 
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
 
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
 
やはりお前らのCore Dataの使い方も間違っている
やはりお前らのCore Dataの使い方も間違っているやはりお前らのCore Dataの使い方も間違っている
やはりお前らのCore Dataの使い方も間違っている
 
OHHTTPStubsを使ったiOSアプリ開発
OHHTTPStubsを使ったiOSアプリ開発OHHTTPStubsを使ったiOSアプリ開発
OHHTTPStubsを使ったiOSアプリ開発
 
ジョブズも成仏するTips考えたったwww
ジョブズも成仏するTips考えたったwwwジョブズも成仏するTips考えたったwww
ジョブズも成仏するTips考えたったwww
 
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っているやはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
 

Último

Último (12)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

小学生でも分かった気になるiOS8のSize Class