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

33,561 views
33,219 views

Published on

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

Published in: Technology
0 Comments
72 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
33,561
On SlideShare
0
From Embeds
0
Number of Embeds
6,793
Actions
Shares
0
Downloads
60
Comments
0
Likes
72
Embeds 0
No embeds

No notes for slide

やはりお前らの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

×