狠狠撸
Submit Search
既存アプリのiOS 7対応 | iOS 7エンジニア勉強会
?
44 likes
?
45,757 views
驰补丑辞辞!デベロッパーネットワーク
Follow
1 of 64
Download now
Download to read offline
More Related Content
既存アプリのiOS 7対応 | iOS 7エンジニア勉強会
1.
既存アプリのiOS7対応 西?磨翁 2013年10月7日
2.
本日の事例となるアプリ
4.
颈翱厂7対応にも特集されました
5.
ヤフオク!アプリ
6.
IOS6
7.
IOS7対応 途中
8.
IOS7対応 最終形
9.
作業は大きく分けて2つ ?iOS7向けに実装方法を変更する ?颈翱厂7向けに装饰を行う アイコンの準備?変更については今回は割愛します
10.
ヤフオク!アプリについて ?iPhoneが日本に登場してまもな くリリースした歴史あるアプリ ?iOS4.3以降をサポート中
11.
iOS7向けに実装方法を 変更する
12.
1.翱厂毎に処理を分岐する
13.
このようなメソッドを用意しておいて OS毎の分岐処理に備えましょう + (BOOL)isOverThisVersion:(NSString *)version{ !
NSString!*currentVersion =![[UIDevice currentDevice]systemVersion]; ! return! (! [currentVersion ! ! ! ! ! compare: ! ! ! ! ! ! version ! ! ! ! ! options: ! ! ! ! ! ! NSNumericSearch ! ! ! ! ]! !=!NSOrderedAscending ! ! ! ); }
14.
2.UIViewController での潜り込みに対処する
15.
画面の上部が表示されない!?
16.
颈翱厂7では画面全体が表示领域となる
17.
狈补惫颈驳补迟颈辞苍叠补谤に潜りこんでしまう
18.
狈补惫颈驳补迟颈辞苍叠补谤に潜りこんでしまう
19.
対処方法 表示領域の拡張をやめさせる
20.
self.edgesForExtendedLayout = UIRectEdgeNone; ※IOS7の時のみ実行するようにしましょう また、すりガラスの表現が失われます
21.
UIViewControllerにTableView をaddSubviewした場合にも 発生します
22.
画面の上部が潜り込む??
23.
同じように self.edgesForExtendedLayout = UIRectEdgeNone; ※IOS7の時のみ実行するようにしましょう また、すりガラスの表現が失われます
24.
3.階層構造の変更に対応する その1
25.
UITableViewCell UITableViewCellContent UIButtonなどの コンポーネント UITableViewCell UITableViewCellContent UIButtonなどの コンポーネント UITableViewCellScrollView iOS6 iOS7 コンポーネントからsuperview.superviewで UITableViewCellにアクセスできなくなりました。 superview superview superview superview superview
26.
対処方法
27.
+ (UITableViewCell*)searchTableViewCell:(UIView*)view { id target
= [view superview]; if (!target) { return nil; } if ([target isKindOfClass:[UITableViewCell class]]) { return target; } return [self searchTableViewCell:target]; } UITableViewCellを探索して 取得するようにする
28.
superviewでUITableViewCellにアクセスしようと すること自体、Appleが推奨する方法ではありません。 新規にアプリを作る場合は他の方法をご検討ください。 今後動かなくなる可能性があります。 ヤフオク!アプリは開発の歴史が長く、修正の影響範囲が大 きかったため今回はこのような対応となりました。 ご注意!
29.
4.階層構造の変更に対応する その2
30.
UITableViewCellからsuperviewで UITableViewにアクセスできなくなりました UITableView UITableViewCell UITableView UITableViewCell UITableViewWrapperView iOS6 iOS7 superview superview superview
31.
UITableView *tableView =
nil; if (iOS7なら~) { //iOS7ではcell.superviewではUITableViewWrapperViewが返却される。 //このためUITableViewを取得するためにはcell.superview.superviewと //処理する必要がある tableView = (UITableView*)cell.superview.superview; }else{ tableView = (UITableView*)cell.superview; } UITableViewCellの例と同じように 探索してもよいし、単純な分岐でも大丈夫
32.
superviewでUITableViewにアクセスしようと すること自体、Appleが推奨する方法ではありません。 新規にアプリを作る場合は他の方法をご検討ください。 今後動かなくなる可能性があります。 ヤフオク!アプリは開発の歴史が長く、修正の影響範囲が大 きかったため今回はこのような対応となりました。 くどいようですが???ご注意!
33.
ヤフオク!アプリでは以上まで の対応を行ってようやく動作 するようになりました。
34.
とりあえず动くレベル
35.
もっとカッコよくしたい!
37.
颈翱厂7向けに装饰を行う
38.
5.タブ上に罫線が表示される 問題を解決する
39.
UITabBarControllerにUIButtonを addSubviewしていると発生する
40.
対処方法
41.
//ダミーのタブバー背景 [[UITabBar appearance] setBackgroundImage:[[UIImage
alloc] init]]; //罫線除去 [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
42.
6.iOS6と同様の罫線表示 にする
43.
iOS7標準 罫線を引く
44.
//セルの罫線のインデントをなくす [UITableViewCell appearance].separatorInset =
UIEdgeInsetsZero;
45.
7.「&濒迟;」アイコンを変更する
46.
iOS7標準 独自アイコン
47.
//ナビゲーションバーの戻るのアイコンを変更 [UINavigationBar appearance].backIndicatorImage = [UIImage
imageNamed:@"header_allow_ios7.png"]; [UINavigationBar appearance].backIndicatorTransitionMaskImage = [UIImage imageNamed:@"header_allow_ios7.png"]; iOS7より新たに追加されたメソッド
48.
8.UITableViewStyleGrouped の強制大文字に対応する
49.
iOS6 iOS7
50.
UITableViewStylePlainに変更する または tableView:viewForHeaderInSection: を実装する 他にも方法はありそうですが 上記どちらかでOK
51.
UITableViewStylePlainにしました iOS7でも小文字が使える
52.
9.accessoryはaccessoryViewに 配置する
53.
颈翱厂7だと右づめになっていない
54.
[cell.contentView addSubview:sw]; ↓ cell.accesoryView =
sw;
55.
その他のUIの色はtintColorを UIAppearanceで一括指定する ことで対応しました
56.
まとめ ? iOS6がリリースされた時と比べ対応工数が格段に多 い。UI変更も含めると余裕を持った工数見積が必要。 ヤフオク!アプリの場合、iOS6の対応を行った時よりも 10倍程度の工数がかかった。 ? UIAppearanceを活用して装飾に関する修正量を減らすよ うにする
57.
APPENDIX
58.
リリース后の反応について
63.
色々なご意見を頂いていますが、 IOS7対応後、 DL数はかなり増えました。 一時的ではなく現在も継続してい ます
64.
IOS7対応の参考になれば幸いです ご清聴ありがとうございました
Download now