Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
やはりお前らのiOS7対応
は間違っている
potatotips #3

株式会社キュリオシティソフトウェア
今城 善矩
自己紹介
•

株)キュリオシティソフトウェア代表取締役(@yimajo)
•

•

iOSアプリの受託開発とアクセス解析サービス作ってます

最近趣味とか仕事でiOS7に対応させたアプリは3つ、新規に
iOS7用に作ったのは1つ

•

Q...
お前らが何を間違っているか
•

iOS7でUINavigationBarにself.viewが潜り込むという話
http://techblog.yahoo.co.jp/ios/ios7yahoo/

•

対処方法としてUIViewControllerのプロパティ
ed...
色んなブログでも
iOS7対応でself.viewが潜り込まないようにと
edgesForExtededLayout=UIRectEdgeNone
にしたり
IBでUnder Top Barsをチェック外したり
してて
「これのデメリットは
すりガラス表現が失われる
ことです」
とか書いちゃってる
お前ら釣られすぎ
m9(^Д^)
パターン別
ベストプラクティスを
考えてみた
Adjust Scroll View
Insets

UITableViewContr
oller

UIViewControllerで
View配置

Under Top Bars

✓チェック

✓チェック

まずiOS7用にコン
✓チェッ...
パターン別に説明する前に
まずiOS7から追加された
UIViewControllerのプロパティの
基本的なことを振り返れ
Adjust Scroll View Insetsとは
•

これをチェックしていると、
自動的にUIScrollView系の
contentInsetsを調整してくれ
る

•

ナビゲーションバーがあれば、
ナビゲーションバーの高さ分だ
け...
Under Top Barsとは

•

Viewの上端をどこから始める
かという設定

•

UnderはZ軸での奥という意味

•

UIRectEdgeNoneはこの
チェック全部外すことになる
実際の設定を交えてベストプラク
ティスの説明をしたほうがわか
りやすいかもしれん
UITableViewの場合
•

IBでAdjust Scroll View Insetsをチェックする
•

•

automaticallyAdjustsScrollViewInsets = YES;

IBでUnder Top Bars...
Adjust Scroll View Insetsと
Under Top Barsを共にチェックする

TableViewはTopからはじまり、InsetsTopが調整される
のでNavigationBarの裏側にも表示されスクロール領域
にな...
Adjust Scroll View Insetsがどうであれ
Under Top Barsがオフの時

Under Top Barsがオフの時、TableViewはNavigationBar
のy軸下側からはじまるのでスクロール領域にならず、...
UIViewControllerの
場合
•

プロパティはUITableVIewのときと同じ

•

view上の各コンポーネントの座標値を全画面iOS7基準で
調整する(下げる)

•

iOS6はその座標値に対して ⊿ で調整する
UIScrollViewやUIColletionView
で写真などの全画面表示をしたい
場合のみ
•

IBでAdjust Scroll View Insetsをチェック外す
•

•

automaticallyAdjustsScrollV...
Adjust Scroll View Insetsをチェックせず

Adjust Scroll View Insetsと

Under Top Barをチェックした場合

Under Top Barを共にチェックした場合

右図Adjust S...
iOS6も対応する場合
•

iOS7をメインそれを元にiOS6に対応する(逆じゃない)

•

iOS7は基本全画面表示状態でデザイン調整、必要であれ
ば配置を修正し、iOS6は でY座標位置を調整する

•

Scroll系なら でなくIn...
まとめ
UIScrollView系はInsetsによってスク
ロール開始点をずらすので
Adjust Scroll View Insetsによって適
切に設定されるようになっている
iOS7からは全画面表示なので
それに逆らわず設定し
iOS6用に調整をしてあげよう
ちなみに
Under Top BarsをオフにするとAdjust
Scroll View Insets関係なくなるから
お前らはすぐ釣られるでしょ?
m9(^Д^)
おわり

参考:やはりお前らのMVCは間違っている
http://www.slideshare.net/MugeSo/mvc-14469802
Upcoming SlideShare
Loading in …5
×

やはりお前らのiOS7対応は間違っている

35,551 views

Published on

この資料は2014.1.15にクックパッド主催ヤフー開催のiOS/Android Tips交換会potatotips #3で発表した資料です。 https://github.com/potatotips/potatotips/wiki/Potatotips-3

Published in: Technology
  • Be the first to comment

やはりお前らのiOS7対応は間違っている

  1. 1. やはりお前らのiOS7対応 は間違っている potatotips #3 株式会社キュリオシティソフトウェア 今城 善矩
  2. 2. 自己紹介 • 株)キュリオシティソフトウェア代表取締役(@yimajo) • • iOSアプリの受託開発とアクセス解析サービス作ってます 最近趣味とか仕事でiOS7に対応させたアプリは3つ、新規に iOS7用に作ったのは1つ • QiitaにiOS7ネタも公開してます http://qiita.com/yimajo
  3. 3. お前らが何を間違っているか
  4. 4. • iOS7でUINavigationBarにself.viewが潜り込むという話 http://techblog.yahoo.co.jp/ios/ios7yahoo/ • 対処方法としてUIViewControllerのプロパティ edgesForExtededLayoutをUIRectEdgeNoneとしてる • これはけっして良いやり方じゃない
  5. 5. 色んなブログでも
  6. 6. iOS7対応でself.viewが潜り込まないようにと edgesForExtededLayout=UIRectEdgeNone にしたり IBでUnder Top Barsをチェック外したり してて
  7. 7. 「これのデメリットは すりガラス表現が失われる ことです」 とか書いちゃってる
  8. 8. お前ら釣られすぎ
  9. 9. m9(^Д^)
  10. 10. パターン別 ベストプラクティスを 考えてみた
  11. 11. Adjust Scroll View Insets UITableViewContr oller UIViewControllerで View配置 Under Top Bars ✓チェック ✓チェック まずiOS7用にコン ✓チェック ✓チェック UIScrollViewなど で全画面写真表示 したい時 iOS6の対応には チェック外す ✓チェック ポーネント配置し 直しからの 調整 iOS6のみUse Full ScreenをYES
  12. 12. パターン別に説明する前に
  13. 13. まずiOS7から追加された UIViewControllerのプロパティの 基本的なことを振り返れ
  14. 14. Adjust Scroll View Insetsとは • これをチェックしていると、 自動的にUIScrollView系の contentInsetsを調整してくれ る • ナビゲーションバーがあれば、 ナビゲーションバーの高さ分だ けcontentInsets.topを調整
  15. 15. Under Top Barsとは • Viewの上端をどこから始める かという設定 • UnderはZ軸での奥という意味 • UIRectEdgeNoneはこの チェック全部外すことになる
  16. 16. 実際の設定を交えてベストプラク ティスの説明をしたほうがわか りやすいかもしれん
  17. 17. UITableViewの場合 • IBでAdjust Scroll View Insetsをチェックする • • automaticallyAdjustsScrollViewInsets = YES; IBでUnder Top Barsをチェック • edgesForExtededLayout = UIRectEdgeTopもしくは UIRectEdgeAll
  18. 18. Adjust Scroll View Insetsと Under Top Barsを共にチェックする TableViewはTopからはじまり、InsetsTopが調整される のでNavigationBarの裏側にも表示されスクロール領域 になってくれる
  19. 19. Adjust Scroll View Insetsがどうであれ Under Top Barsがオフの時 Under Top Barsがオフの時、TableViewはNavigationBar のy軸下側からはじまるのでスクロール領域にならず、 黒の背景が半透明で表示され黒っぽくなる。 決して「すりガラス表現が失われる」わけではない
  20. 20. UIViewControllerの 場合 • プロパティはUITableVIewのときと同じ • view上の各コンポーネントの座標値を全画面iOS7基準で 調整する(下げる) • iOS6はその座標値に対して ⊿ で調整する
  21. 21. UIScrollViewやUIColletionView で写真などの全画面表示をしたい 場合のみ • IBでAdjust Scroll View Insetsをチェック外す • • automaticallyAdjustsScrollViewInsets = NO; IBでUnder Top Barsをチェック(UIRectEdgeNone駄目) • edgesForExtededLayout = UIRectEdgeTop;
  22. 22. Adjust Scroll View Insetsをチェックせず Adjust Scroll View Insetsと Under Top Barをチェックした場合 Under Top Barを共にチェックした場合 右図Adjust Scroll View Insetsをチェックすると 全画面表示のUIScrollViewもInsetsを考慮されてしまう タップしたらナビゲーションバーが消える場合、 画像は上に向かって動く
  23. 23. iOS6も対応する場合 • iOS7をメインそれを元にiOS6に対応する(逆じゃない) • iOS7は基本全画面表示状態でデザイン調整、必要であれ ば配置を修正し、iOS6は でY座標位置を調整する • Scroll系なら でなくInsetsで対応できる • iOS6で写真などを全画面表示したい場合は今までどお り、非推奨のUse Full Screenを使う
  24. 24. まとめ
  25. 25. UIScrollView系はInsetsによってスク ロール開始点をずらすので Adjust Scroll View Insetsによって適 切に設定されるようになっている
  26. 26. iOS7からは全画面表示なので それに逆らわず設定し iOS6用に調整をしてあげよう
  27. 27. ちなみに Under Top BarsをオフにするとAdjust Scroll View Insets関係なくなるから お前らはすぐ釣られるでしょ?
  28. 28. m9(^Д^)
  29. 29. おわり 参考:やはりお前らのMVCは間違っている http://www.slideshare.net/MugeSo/mvc-14469802

×