タグ

ブックマーク / shu223.hatenablog.com (18)

  • 【iOS8】App Extension の実装方法 その1:Action - その後のその後

    App Extension とは? App Extension (Extensions) は、iOS 8 から導入される、新しいアプリ間連携のしくみです。 iOS では、以下の 6種類の Extension point *1を利用することができます。 Today Share Action Photo Editing Storage Provider Custom keyboard 大まかな仕組みは同じなのですが、見た目/機能は Extension point によって色々と違いがあり、実装方法も違ってくる(部分もある)ので、個別に説明していきたいと思います。 まずは一番説明しやすい "Action" から。 1. ターゲットを作成する Xcode の [File] > [New] > [Target] から、[Application Extension] > [Action Extensi

    【iOS8】App Extension の実装方法 その1:Action - その後のその後
  • CALayer を用いた「影」の描画処理を軽くする - その後のその後

    CALayerを用いてUIViewを継承したクラスに影をつける方法は、下記のような感じで(CoreGraphicsで描画する方法などと比べて)わかりやすくお手軽で、質感もグッと増すので、ついつい多用したくなります。 self.layer.shadowOpacity = 0.5; self.layer.shadowRadius = 2.0; self.layer.shadowOffset = CGSizeMake(0.0, 0.0); ただ、影とか透過とかの処理はなかなか重いらしく、例えば UITableViewCell に置いた背景用画像に影をつけると、iPhone4ぐらいでも完全に体感できるぐらいに遅くなってしまいます。 で、このコードに下記の3行を付け加えてやると、体感でわかるぐらいに改善されます。 self.layer.shadowPath = [UIBezierPath bezie

    CALayer を用いた「影」の描画処理を軽くする - その後のその後
    ojimac
    ojimac 2015/06/26
    これは知らなかった。。パフォーマンス気になる箇所見なおしてみる。
  • アプリのメモリ使用量をリアルタイムに表示するクラスを公開しました - Over&Out その後

    なるべくUIViewを使わず描画するとか、nibを使わないとか、iOSアプリの動作を軽快にするためのTipsは数あれど、実際どれぐらい効果あるんだろう、ってことを調べたい、でもInstrumentsはめんどくさい、ってことでメモリ消費量やUIViewの数など、「負荷を示すパラメータ」をリアルタイム表示するクラスを作りました。 (イメージとしてはAS3でいうところのStats) 同梱のサンプルコードを実行すると、こんな感じで表示されます。(左上の黒いラベルがStats) パラメータ内訳は後述しますが、メモリを約16MB使用し、ビューが合計5つ(UIView、UIButton、UIButton上のUILabel、UIImageView、Stats)になっていることがわかります。 また、draw imageボタンを連打するとCPU負荷の値が若干上がることも確認できます。 ※シミュレータでの実行結

    アプリのメモリ使用量をリアルタイムに表示するクラスを公開しました - Over&Out その後
    ojimac
    ojimac 2015/03/26
  • 第5回、第6回 #potatotips で勉強になったことのまとめ - その後のその後

    例のごとく、『第5回 #potatotips』『第6回 #potatotips』について @hirama2 さんの記事を読んでキャッチアップさせていただきました。 第5回 #potatotips で発表された12個のiOSのtipsをまとめる - Think Big Act Local 第6回はUIEvolution開催! #potatotips で発表されたiOSのtipsまとめ - Think Big Act Local で、ちまちまメモとして勉強になったことをツイートしてたのですが、わりとふぁぼられ率が高いので、ニーズあるかもしれないのでこちらにまとめておきます。 『え!?Storyboard使ってるのにそんな画面遷移のしかたしてるのですか!?』 ViewControllerを疎結合にしておくための、値の受け渡し方の提案、およびそれを実現するための TKRIntent の話 by @

    第5回、第6回 #potatotips で勉強になったことのまとめ - その後のその後
    ojimac
    ojimac 2014/04/17
  • 【iOS7】プッシュ通知のバックグラウンド処理でハマったメモ - その後のその後

    やりたかったこと: プッシュ通知を受け取ったときにアプリを起動することなく(バックグラウンドで)APIを呼ぶ これはおそらく「サイレントプッシュ通知(Silent Remote Notification)からの Background Fetch」の最も一般的な実装事例だと思うのですが、これがなかなかうまくいかず、試行錯誤しました。 最終的にはうまくいったのですが、そもそも何が原因だったのか、諸々の対策がどう効いて解決したのか、質的なことはあまりわかっていません。とにかく最終的にうまくいった実装と参考にした記事をここにメモっておきます。 (どの記事にも書いてある application:didReceiveRemoteNotification:fetchCompletionHandler: を実装するとか、通知を送る側の話とか、従来通りのプッシュ通知実装と同じ手順とかはこの記事では省略して

    【iOS7】プッシュ通知のバックグラウンド処理でハマったメモ - その後のその後
  • パフォーマンスチューニングに関するアップルのドキュメント - その後のその後

    アップルの『 iOSアプリケーションプログラミングガイド(英語版)』に、『パフォーマンスと応答性のチューニング』という章があって、これが今読むとかなり参考になったので、引用します。 個人的には、「リソースをあらかじめロードしておくと高速化になりそうだけど、メモリの無駄遣いになって結果的に遅くなるので絶対にやるな」というのが一番ささりました。 画像ファイルはUIImage化しておくと使うときに速そうだなーとか考えてたところだったので。 他にも個人的にためになった部分を太字にしてあります。 メインスレッドを妨害しない アプリケーションのメインスレッド上で実行する処理のタイプを必ず制限します。メインスレッドは、アプリケーションがタッチイベントやその他のユーザ入力を処理する場所です。 アプリケーションが常にユーザに応答することを保証するには、時間のかかるタスクの実行や際限なく続く可能性のあるタスク

    パフォーマンスチューニングに関するアップルのドキュメント - その後のその後
  • API クライアントを AFNetworking を用いてつくる手順 - その後のその後

    「ちょっとこの Web API 使ってなんかつくってみるか」ということがたまにある(とくにハッカソンで)ので、手早くつくれるように僕なりの手順をまとめてみました。 「共通処理の実装」までは簡単な文字列の置換で済むので、 ファイルテンプレートにしておく とより簡単になりそうです(参考:Xcodeのファイルテンプレートを自作する)。 0. クラスファイルを新規作成 AFHTTPClientのサブクラスとしてクラスファイルを新規作成する。 1. 共通処理の実装 APIキーをセットするメソッドの定義と実装と、オブジェクト初期化用のメソッド実装。 ヘッダファイル(.h) + (void)setAPIKey:(NSString *)APIKey; 実装ファイル(.m) #import "AFJSONRequestOperation.h" #define API_BASE_URL @"http://xx

    API クライアントを AFNetworking を用いてつくる手順 - その後のその後
    ojimac
    ojimac 2013/09/12
  • .ipa ファイル生成を自動化する - その後のその後

    通常.ipaファイルを作成するには、Product メニューの Archive 実行後に、 Organizer から アーカイブを選択し Distribute ボタン押下 "Save for Enterprise or Ad-Hoc Deployment" を選択し Next ボタン押下 ドロップダウンリストから該当するプロビジョニングプロファイルを選択 保存先を指定 という手順を踏みます。ウィザードに従って進めるだけなので、たまに行う程度であれば問題ないのですが、.ipaファイルを作成して共有する頻度が多い場合(例えばリリースが近く細かい修正と確認を繰り返す場合)は面倒になってきます。 Xcode の Run Script を利用し、アーカイブ完了後に自動で ipa ファイルを生成するように設定する方法を紹介します。 ※通常のアドホックビルドの準備の手順(アドホックビルド用のプロビジョニ

    .ipa ファイル生成を自動化する - その後のその後
    ojimac
    ojimac 2013/03/13
  • UITableViewController のreloadDataをコールするタイミング - その後のその後

    こちらのページで知ったのですが、下記のように書いておけばビューが表示されるたびにリロードされ、かつ初回表示時に二重にリロードされてしまうこともないらしいです。 - (void)viewWillAppear:(BOOL)animated { [self.tableView reloadData]; [super viewWillAppear:animated]; } なぜなら、 UITableViewControllerのviewWillAppear:メソッドでは、まだデータがロードされていない状態の時にだけ、reloadDataを呼び出すよう、実装されているようです。 とのこと。 これ知らなくてフラグ立てて管理してました・・・

    UITableViewController のreloadDataをコールするタイミング - その後のその後
    ojimac
    ojimac 2013/01/29
  • アプリアップデート後の初回起動時にUIAlertViewでお知らせを表示する方法 - その後のその後

    アップデートしたあとに、「このバージョンの新機能」とかがポップアップで出てくるアレの実装方法です。 (パッと思い出せるのはAppBankさんのアプリとか) 下記をAppDelegateのapplicationDidFinishLaunching:あたりで実行します。 // ロードしたことあるバージョンを調べる NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; float loadedVersion = [[defaults objectForKey:@"version"] floatValue]; // このバンドルのバージョンを調べる float bundleVersion = [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleV

    アプリアップデート後の初回起動時にUIAlertViewでお知らせを表示する方法 - その後のその後
    ojimac
    ojimac 2013/01/29
  • UIPopoverControllerをiPhoneで使う - その後のその後

    3.2でiPad用に新設されたこのUI、iOS4だと使えたりしないのかな、と思い試してみました。 iPadではちゃんと動作するところまで作って、iPhoneシミュレータで動作させようとすると -[UIPopoverController initWithContentViewController:] called when not running under UIUserInterfaceIdiomPad. ってエラーが出ました。やはりダメみたいです。 WEPopover でもこんなのを見つけました。 http://stackoverflow.com/questions/3878332/uipopovercontroller-for-iphone-currently-only-available-for-ipad Before I implement something similar fo

    UIPopoverControllerをiPhoneで使う - その後のその後
    ojimac
    ojimac 2013/01/29
  • スクリーンショットを撮る - その後のその後

    たまたまDeveloper Centerで見かけたもの。引数不要、戻り値はUIImageと、使いやすそうなので載せておきます。 (自分ではまだ試してないのですが・・・) http://developer.apple.com/library/ios/#qa/qa1703/_index.html%23//apple_ref/doc/uid/DTS40010193 - (UIImage*)screenshot { CGSize imageSize = [[UIScreen mainScreen] bounds].size; if (NULL != UIGraphicsBeginImageContextWithOptions) UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0); else UIGraphicsBeginImageCon

    スクリーンショットを撮る - その後のその後
    ojimac
    ojimac 2013/01/29
  • リファクタリング講座メモ - その後のその後

    5/29にRainbowApps卒業生の方が主催された合宿に参加した際、そこでバスケさんが話されていた「公開リファクタリング講座」が非常にためになる内容だったので、そのときのメモを公開しておきます。 メモリまわりのデバッグ/リファクタリング leaksが有名なのでそればかり使いがちだが、memory allocationやzombiesでも見てみること live bytesが使用中のメモリ量 1.5Mぐらいなら画像使用してるアプリなら多くない 13Mになると、初代ipadなら落ちる可能性ある live bytesでソートすると、今一番メモリくってるオブジェクトタイプがわかる breakpointを右クリックでエディットできる アクションの設定・・・10回通った後で止まる、とか。 バンドルからplistを読み込む動作は重い(一時オブジェクトが生成されるのでメモリ空間も汚れる)ので基的には1

    リファクタリング講座メモ - その後のその後
    ojimac
    ojimac 2013/01/29
  • Facebook SDK 3.0 for iOS のサンプルを一通り試してみました - その後のその後

    今回は従来のように github からソース一式をとってくる方式ではなく、インストールパッケージをダウンロードしてインストールする方式になったようです。 https://developers.facebook.com/ios/ で、インストールはさくっと終わったのですが、どこに何がインストールされたのかわからなかったのでもう一度インストールし直して最後に出てくるドキュメントを確認しました。 TRY IT OUT 1. Test your install; build and run the project at ~/Documents/FacebookSDK/Samples/HelloFacebookSample/HelloFacebookSample.xcodeproj 2. Check-out the tutorials available online at: https://dev

    Facebook SDK 3.0 for iOS のサンプルを一通り試してみました - その後のその後
  • Twitter や Facebook への投稿ライブラリ ShareKit の Tips - その後のその後

    「iOSアプリにソーシャルサイトでのシェア機能を3行で簡単実装できる」という謳い文句で有名な ShareKit を初めて使ってみたのですが、ひっかかった部分や、ドキュメントに書いてなくてソースから汲み取った部分などあったので、諸々メモしておきます。 ソース入手先に注意! ググるとここがトップに出てきて、このページ内にリンクが張られているソースのダウンロード先はここということになっていますが、最終更新が1年以上前とえらく古いものなので要注意です。 現在の家はこちらのようです。 https://github.com/ShareKit/ShareKit ドキュメントはこちら。 https://github.com/ShareKit/ShareKit/wiki iOS 5 から追加された Twitter フレームワークにも対応済み 作っているアプリのビルドターゲットが iOS 5.0 以上なので

    Twitter や Facebook への投稿ライブラリ ShareKit の Tips - その後のその後
  • ARC の有効/無効をファイルごとに設定する方法 - その後のその後

    プロジェクト全体でARCを有効にした状態で、一部ファイルを無効にしたい場合は、 1. プロジェクト設定画面のBuild Phasesタブを開く 2. ARCを無効にしたいファイルをまとめて選択 3. リターンキーを押すとダイアログボックスが出てくるので、"-fno-objc-arc"というコンパイラフラグを追加する。 逆に、一部ファイルだけ有効にしたい場合は、プロジェクト全体でARCを無効にした状態で、"-fobjc-arc"フラグを追加します。 参考ページ http://stackoverflow.com/questions/6308425/ios-5-best-practice-release-retain/ http://ios.biomsoft.com/2011/12/24/migrating-your-code-to-objective-c-arc/

    ARC の有効/無効をファイルごとに設定する方法 - その後のその後
  • Assets Library からの読み込みを高速化するための試行錯誤 - その後のその後

    先日出した高速スライドショーアプリは最高0.1s/枚とうたっていますが、実際のところ、なかなか1秒に10枚表示とはいきません。 ALAsset から UIImage へ変換する部分の実装ではこんな感じになっているのですが、 ALAsset *aseet = (ALAsset *)[self.assets objectAtIndex:currentAssetIndex]; ALAssetRepresentation *representation = [asset defaultRepresentation]; UIImage *img = [UIImage imageWithCGImage:[representation fullScreenImage] scale:[representation scale] orientation:[representation orientation

    Assets Library からの読み込みを高速化するための試行錯誤 - その後のその後
  • iOS 6 新機能のサンプルコード/ライブラリのまとめ33個 - Over&Out その後

    英語のリファレンスだけじゃよくわからん、動くサンプルが欲しい!」という僕のために、NDA解禁されたてほやほやの iOS 6 関連のサンプルコード/オープンソースライブラリ等を集めてみました。 UICollectionView 1. iOS6-Playground iTunesから取得したムービーのカバー画像を、UICollectionView を用いて様々なレイアウトで表示するサンプルコードです。 UICollectionViewController, UICollectionViewCell, UICollectionViewLayout, UICollectionViewFlowLayout 等、UICollectionView 関連の新クラスは一通り使われています。 StoreKit に新たに追加された SKStoreProductViewController も使われていて、参考

    iOS 6 新機能のサンプルコード/ライブラリのまとめ33個 - Over&Out その後
    ojimac
    ojimac 2012/10/01
  • 1