SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
既存アプリのiOS7対応
西 磨翁
2013年10月7日
本日の事例となるアプリ
iOS7対応にも特集されました
ヤフオク!アプリ
IOS6
IOS7対応 途中
IOS7対応 最終形
作業は大きく分けて2つ
•iOS7向けに実装方法を変更する
•iOS7向けに装飾を行う
アイコンの準備・変更については今回は割愛します
ヤフオク!アプリについて
•iPhoneが日本に登場してまもな
くリリースした歴史あるアプリ
•iOS4.3以降をサポート中
iOS7向けに実装方法を
変更する
1.OS毎に処理を分岐する
このようなメソッドを用意しておいて
OS毎の分岐処理に備えましょう
+ (BOOL)isOverThisVersion:(NSString *)version{
! NSString!*currentVersion =![[UIDevice currentDevice]systemVersion];
! return! (! [currentVersion
! ! ! ! ! compare:
! ! ! ! ! ! version
! ! ! ! ! options:
! ! ! ! ! ! NSNumericSearch
! ! ! ! ]! !=!NSOrderedAscending
! ! ! );
}
2.UIViewController
での潜り込みに対処する
画面の上部が表示されない!?
iOS7では画面全体が表示領域となる
NavigationBarに潜りこんでしまう
NavigationBarに潜りこんでしまう
対処方法
表示領域の拡張をやめさせる
self.edgesForExtendedLayout =
UIRectEdgeNone;
※IOS7の時のみ実行するようにしましょう
また、すりガラスの表現が失われます
UIViewControllerにTableView
をaddSubviewした場合にも
発生します
画面の上部が潜り込む・・
同じように
self.edgesForExtendedLayout =
UIRectEdgeNone;
※IOS7の時のみ実行するようにしましょう
また、すりガラスの表現が失われます
3.階層構造の変更に対応する
その1
UITableViewCell
UITableViewCellContent
UIButtonなどの
コンポーネント
UITableViewCell
UITableViewCellContent
UIButtonなどの
コンポーネント
UITableViewCellScrollView
iOS6 iOS7
コンポーネントからsuperview.superviewで
UITableViewCellにアクセスできなくなりました。
superview
superview
superview
superview
superview
対処方法
+ (UITableViewCell*)searchTableViewCell:(UIView*)view
{
id target = [view superview];
if (!target) {
return nil;
}
if ([target isKindOfClass:[UITableViewCell class]]) {
return target;
}
return [self searchTableViewCell:target];
}
UITableViewCellを探索して
取得するようにする
superviewでUITableViewCellにアクセスしようと
すること自体、Appleが推奨する方法ではありません。
新規にアプリを作る場合は他の方法をご検討ください。
今後動かなくなる可能性があります。
ヤフオク!アプリは開発の歴史が長く、修正の影響範囲が大
きかったため今回はこのような対応となりました。
ご注意!
4.階層構造の変更に対応する
その2
UITableViewCellからsuperviewで
UITableViewにアクセスできなくなりました
UITableView
UITableViewCell
UITableView
UITableViewCell
UITableViewWrapperView
iOS6 iOS7
superview
superview
superview
UITableView *tableView = nil;
if (iOS7なら∼) {
//iOS7ではcell.superviewではUITableViewWrapperViewが返却される。
//このためUITableViewを取得するためにはcell.superview.superviewと
//処理する必要がある
tableView = (UITableView*)cell.superview.superview;
}else{
tableView = (UITableView*)cell.superview;
}
UITableViewCellの例と同じように
探索してもよいし、単純な分岐でも大丈夫
superviewでUITableViewにアクセスしようと
すること自体、Appleが推奨する方法ではありません。
新規にアプリを作る場合は他の方法をご検討ください。
今後動かなくなる可能性があります。
ヤフオク!アプリは開発の歴史が長く、修正の影響範囲が大
きかったため今回はこのような対応となりました。
くどいようですが・・・ご注意!
ヤフオク!アプリでは以上まで
の対応を行ってようやく動作
するようになりました。
とりあえず動くレベル
もっとカッコよくしたい!
iOS7向けに装飾を行う
5.タブ上に罫線が表示される
問題を解決する
UITabBarControllerにUIButtonを
addSubviewしていると発生する
対処方法
//ダミーのタブバー背景
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
//罫線除去
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
6.iOS6と同様の罫線表示
にする
iOS7標準 罫線を引く
//セルの罫線のインデントをなくす
[UITableViewCell appearance].separatorInset = UIEdgeInsetsZero;
7.「<」アイコンを変更する
iOS7標準 独自アイコン
//ナビゲーションバーの戻るのアイコンを変更
[UINavigationBar appearance].backIndicatorImage =
[UIImage imageNamed:@"header_allow_ios7.png"];
[UINavigationBar appearance].backIndicatorTransitionMaskImage =
[UIImage imageNamed:@"header_allow_ios7.png"];
iOS7より新たに追加されたメソッド
8.UITableViewStyleGrouped
の強制大文字に対応する
iOS6 iOS7
UITableViewStylePlainに変更する
または
tableView:viewForHeaderInSection:
を実装する
他にも方法はありそうですが
上記どちらかでOK
UITableViewStylePlainにしました
iOS7でも小文字が使える
9.accessoryはaccessoryViewに
配置する
iOS7だと右づめになっていない
[cell.contentView addSubview:sw];
↓
cell.accesoryView = sw;
その他のUIの色はtintColorを
UIAppearanceで一括指定する
ことで対応しました
まとめ
• iOS6がリリースされた時と比べ対応工数が格段に多
い。UI変更も含めると余裕を持った工数見積が必要。
ヤフオク!アプリの場合、iOS6の対応を行った時よりも
10倍程度の工数がかかった。
• UIAppearanceを活用して装飾に関する修正量を減らすよ
うにする
APPENDIX
リリース後の反応について
色々なご意見を頂いていますが、
IOS7対応後、
DL数はかなり増えました。
一時的ではなく現在も継続してい
ます
IOS7対応の参考になれば幸いです
ご清聴ありがとうございました

Contenu connexe

En vedette

【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門
【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門
【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門Takanori Kashino
 
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っているやはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている今城 善矩
 
【デザイン思考マスター・クラス:11月24/25日】本場スタンフォード大学に学ぶ!
【デザイン思考マスター・クラス:11月24/25日】本場スタンフォード大学に学ぶ!【デザイン思考マスター・クラス:11月24/25日】本場スタンフォード大学に学ぶ!
【デザイン思考マスター・クラス:11月24/25日】本場スタンフォード大学に学ぶ!Takanori Kashino
 
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門Hisashi HATAKEYAMA
 
UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
UI&UX / 重要なのは、毎日さわって嬉しい UI UX! UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
UI&UX / 重要なのは、毎日さわって嬉しい UI UX! Akiko Ohtsuka
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 

En vedette (7)

【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門
【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門
【11月3日】本場スタンフォード大学に学ぶ!デザイン思考入門
 
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っているやはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
 
【デザイン思考マスター・クラス:11月24/25日】本場スタンフォード大学に学ぶ!
【デザイン思考マスター・クラス:11月24/25日】本場スタンフォード大学に学ぶ!【デザイン思考マスター・クラス:11月24/25日】本場スタンフォード大学に学ぶ!
【デザイン思考マスター・クラス:11月24/25日】本場スタンフォード大学に学ぶ!
 
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
 
UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
UI&UX / 重要なのは、毎日さわって嬉しい UI UX! UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
コンテンツ作りの三原則
コンテンツ作りの三原則コンテンツ作りの三原則
コンテンツ作りの三原則
 

Similaire à 既存アプリのiOS 7対応 | iOS 7エンジニア勉強会

iOSローカライズことはじめ
iOSローカライズことはじめiOSローカライズことはじめ
iOSローカライズことはじめ俊輔 嶺村
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編Shuichi Tsutsumi
 
iOS7新機能&デザインまとめ
iOS7新機能&デザインまとめiOS7新機能&デザインまとめ
iOS7新機能&デザインまとめVitalify.Inc
 
Uicollectionview
UicollectionviewUicollectionview
Uicollectionviewtowaki777
 
iBeacon Applications
iBeacon ApplicationsiBeacon Applications
iBeacon ApplicationsKosuke Usami
 
Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9Tomohiro Kumagai
 
iOS 8 App Extension
iOS 8 App ExtensioniOS 8 App Extension
iOS 8 App ExtensionTakeo Nanba
 
Size class 20150521
Size class 20150521Size class 20150521
Size class 20150521Takeshi Sato
 
BPStudy #111 iOS 10 and iPhone 7
BPStudy #111 iOS 10 and iPhone 7BPStudy #111 iOS 10 and iPhone 7
BPStudy #111 iOS 10 and iPhone 7Yukio Andoh
 
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化幸雄 村上
 
iOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckiniOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckinKosuke Ogawa
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①Nagamine Hiromasa
 

Similaire à 既存アプリのiOS 7対応 | iOS 7エンジニア勉強会 (14)

iOSローカライズことはじめ
iOSローカライズことはじめiOSローカライズことはじめ
iOSローカライズことはじめ
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
 
iOS7新機能&デザインまとめ
iOS7新機能&デザインまとめiOS7新機能&デザインまとめ
iOS7新機能&デザインまとめ
 
Uicollectionview
UicollectionviewUicollectionview
Uicollectionview
 
iBeacon Applications
iBeacon ApplicationsiBeacon Applications
iBeacon Applications
 
Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9
 
iOS 8 App Extension
iOS 8 App ExtensioniOS 8 App Extension
iOS 8 App Extension
 
Size class 20150521
Size class 20150521Size class 20150521
Size class 20150521
 
既存アプリのiOS8対応 #ios8yahoo
既存アプリのiOS8対応 #ios8yahoo既存アプリのiOS8対応 #ios8yahoo
既存アプリのiOS8対応 #ios8yahoo
 
BPStudy #111 iOS 10 and iPhone 7
BPStudy #111 iOS 10 and iPhone 7BPStudy #111 iOS 10 and iPhone 7
BPStudy #111 iOS 10 and iPhone 7
 
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
 
iOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckiniOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckin
 
Apple Map
Apple MapApple Map
Apple Map
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
 

Plus de Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Plus de Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

既存アプリのiOS 7対応 | iOS 7エンジニア勉強会