タグ

iPhoneとstudyに関するraimon49のブックマーク (46)

  • iOS とAndroid の違い クロスプラットフォームのアプリデザインで特に気をつけるべき点|marin

    私が一番最初にAndroid アプリをデザインしたのが2016年の初夏頃で、その頃はまだiOS・Android とデザインが違うのが主流でしたが、2021年現在のアプリはiOS もAndroid もプラットフォームごとの細かな違いはあれどほぼ同じデザインが主流となっています。 これは2016年の10月にAndroid APIがBottomNavigationView に対応してからじわじわ浸透していった変化だと考えているのですが、その辺の歴史の話は省略します。プラットフォームは違えどスマートフォンアプリである以上デザインは同じ方が楽なので、共通化されていったのは自然な流れだと思います。実際両者が全然違うUI・デザインだと大変ですしね……。 とはいえ、プラットフォームが違うので全て同じというわけにもいきません。iOS にはHuman Interface Guidelines、Android

    iOS とAndroid の違い クロスプラットフォームのアプリデザインで特に気をつけるべき点|marin
  • Storyboardとの付き合い方 2018

    Aug 12, 2018 少し前に、自分のStoryboardの使い方をツイートしたら割と反応があったので、改めてまとめてみようと思います。これまで何年かiOSアプリの開発をしてきて、Storyboardとの付き合い方は何度も変わりました。なので、今回紹介するものはあくまで2018年現在のもので、来年には変わっているかもしれません。 説明のイメージを掴みやすくするため、画面の例を用意しました。左が編集時のStoryboardで、右が実行時のiOSシミュレーターです。具体的なトピックが出た時に、この例を説明に使うことがあります。 記事の最後にこれが動作するサンプルコードも用意しましたので、興味があればどうぞ。 Storyboardを使う目的 以下の2つを重視して、Storyboardを選択しています。 動作確認に掛かる時間を短縮する 成果物の構造を把握しやすくする ただし、Storyboar

    Storyboardとの付き合い方 2018
  • ユーザーインターフェイス解剖学(公開版)

    Goodpatch Engineer Meetup Vol.3 エンジニア目線で考えるデザイン」で発表したスライドの公開版です。 https://goodpatch.connpass.com/event/56973/

    ユーザーインターフェイス解剖学(公開版)
    raimon49
    raimon49 2017/06/20
    ユーザーに近いものは丸い カスケード構造、レスポンダーチェインの考察
  • GitHub - amitburst/HackerNews: A Hacker News reader iOS app written in Swift.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - amitburst/HackerNews: A Hacker News reader iOS app written in Swift.
    raimon49
    raimon49 2015/05/14
    Hacker News reader iOS app using Swift(通信部分はlibHNラッパー)
  • Metalの「shared CPU/GPU memory buffer」について : DSAS開発者の部屋

    iOS8のリリースにより、A7を搭載したiOS端末からはOpenGLESに代わる新グラフィックスAPIであるMetalが動くようになりました。 iOS8発表時のAppleのKeynoteで紹介されたとおり、MetalはOpenGLとくらべてAPIの層が薄くて最適化されているので高速に動作するようで、他の多くの記事でもこの事が書かれています。 しかし実際にMetalに触れてみると、単にAppleのハードウェアに最適化されていてオーバーヘッドが低く速いということに留まらず、ある一つの特長に気付きます。 それは「shared CPU/GPU memory buffer」つまりCPU/GPU間でメモリが共有されているというものです。 ここでは今までiOSの3Dアプリケーション開発に利用されていたOpenGLESでのメモリの扱い方と比較しつつ、CPU/GPU間でメモリが共有されることのメリットについ

    Metalの「shared CPU/GPU memory buffer」について : DSAS開発者の部屋
    raimon49
    raimon49 2014/10/19
    MetalにおいてはGPUがメモリにアクセスするタイミングは明白(命令発行~コールバックの間)であり、その間はCPUからのメモリアクセスを控えれば2)の心配は無いため、VBOの概念も存在しない。
  • Apple Push Notification Serviceのエラー処理について

    iOSアプリにPush通知をするのに利用するApple Push Notification service(APNs)について。配信数がある程度の規模になると面倒事が増えるのでまとめた。 稿では疎結合なサービスとして稼動させるPush通知配信サーバーを考える。 Push通知配信サーバーの機能要件 個々のアプリケーションから分離したPush通知配信サーバーを考える場合、要件は大きく分けて次の二つになるだろう。 A. デバイストークンを溜め込んでおき、配信日時を指定して一斉に配信する ゲームのイベントが始まった事を全ユーザーに通知したい ユーザーセグメントを指定してキャンペーンの通知をしたい B. 都度送信対象のデバイスをアプリケーションから受け取って即時配信をする チャットルームで発言がある度に、チャットルームのメンバーに通知をしたい ユーザー間のmentionを通知したい Bの場合は、ア

    Apple Push Notification Serviceのエラー処理について
    raimon49
    raimon49 2014/07/04
    >エラー処理をさぼると「10万ユーザーに通知を送ったつもりが、実は1,000人にしか届いていなかった」という事態が起こる。
  • iOS開発におけるウィンドウ「UIWindow」の知られざる活用方法とは? #iOS|CodeIQ MAGAZINE

    iOSアプリではシングルウィンドウしかないと思われがちですが、実は随所で使われているiOSのウィンドウ「UIWindow」。 このUIWindowの知られざる登場シーンや活用法、注意点などについて、DeNAの@sintarioさんに解説レポートを寄稿していただきました。 by 馬場美由紀 (CodeIQ中の人) iOS開発における「ウィンドウ」とは? デスクトップOSであれば、一つのアプリが複数のウィンドウを同時に展開するマルチウィンドウアプリであることは、ほぼ当たり前ですよね。画面上にいくつものウィンドウを同時に開いて、並べたり切り替えたりしながら画面の広さを活かしたやり方で作業するものです。 これに対して、iOSの世界観は大きく様相が異なります。高精細なRetinaディスプレイが普及したとはいえ、iPhoneの画面はやはりお世辞にも広くはありません。一般的にiOSでは、一つのアプリが画

    iOS開発におけるウィンドウ「UIWindow」の知られざる活用方法とは? #iOS|CodeIQ MAGAZINE
    raimon49
    raimon49 2014/05/02
    windowLevelプロパティを使ったモーダルダイアログの例。オブジェクトライフサイクルに注意。ソフトウェアキーボードも内部的にはUIWindowで重ねられているの知らなかった。
  • [iOS] 弱参照を扱えるコレクション NSHashTable と NSMapTable | アドカレ2013 : SP #8 | DevelopersIO

    この記事の内容は、ARC を有効にしていることを前提としています。 NSHashTable と NSMapTable コレクションと参照カウント オブジェクトに対してアクセスしやすくしたい等の理由で、NSMutableDictionary 等のコレクションに他のオブジェクトがオーナーシップを持っているオブジェクトの参照を格納しておきたいケースがたまにあります。こういった場合、オーナーシップを持っているオブジェクトが対象のオブジェクトを解放したと同時にコレクションからも参照を削除するべきなのですが、削除処理の実装を忘れてしまったり処理が煩雑になったりしてしまいがちです。 NSArray, NSSet, NSDictionary 等のコレクションは、オブジェクトが追加されるタイミングでそのオブジェクトの参照カウントをインクリメント(retain)しています。逆に、オブジェクトが削除される、もし

    [iOS] 弱参照を扱えるコレクション NSHashTable と NSMapTable | アドカレ2013 : SP #8 | DevelopersIO
    raimon49
    raimon49 2014/01/31
    NSMutableSetに近いNSHashTableと、NSMutableDictionaryに近いNSMapTable、ただし直接の継承関係は存在しない。retainルールと同一性評価のルールが指定できる。
  • メモリ管理・レイアウトの観点からみた UIViewController の view の扱い - jarinosuke blog

    self.view iOS 開発において、UIViewController の view の振る舞いは一番理解しておきたい点の一つです。 今回はその view に対して、メモリ管理とレイアウトの2つの視点を交えてアプローチを行い、 UIViewController の subclass を作成する上で、 UIViewController の各メソッドにどんな処理を書くべきか、そして何を書くべきでないか を説明出来ればなと思っています。 iOS 6 以降からを対象として考えていますので、 iOS 5 以前は取り扱いません。 self.view の振る舞い 扱いを学ぶには、まず対象の振る舞いを把握する事からです。 ライフサイクルとレイアウトサイクルの2点から簡単に復習します。 self.view のライフサイクル UIViewController の view がどのようなタイミングで生成され

    raimon49
    raimon49 2014/01/31
    レイアウト設定はself.viewプロパティのframeに全てが反映された後に呼ばれる:viewDidLayoutSubviewsで行い、:viewDidLoadではアクション設定。subviewの初期化はgetterで行うのもナルホド。
  • Method Swizzling をうまく使っている実用例 - Qiita

    Method Swizzlingは、既存のメソッドの実装を、自前の実装に差し替えるための手法です。 ・・・ということを知ってはいても、どういうときに使うと便利なのかイマイチわかってなかったので、Method Swizzlingをうまく使った実用例を2つほど探してきました。 実用例その1:既存ソースコードに手を入れずに機能追加 xib ファイルのローカライズを IB 上でできるようにする AutoNibL10n 通常、xibで作成したUIをローカライズする場合、 xibファイルを言語ごとに用意する アウトレットを定義してプログラム側からローカライズした文言をセットする といった面倒な作業が必要でしたが、AutoNibL10n を使用すると、xibファイルを IB から直接多言語対応できるようになります。 たとえば、RootViewController.xibというファイルがあり、その中のUI

    Method Swizzling をうまく使っている実用例 - Qiita
    raimon49
    raimon49 2013/12/24
    Method Swizzling + KVOでrefreshControlプロパティを監視して差し替え
  • iBeaconの解説 - Reinforce-Lab.'s Blog

    iBeaconとその使いかた O2Oの時流のためか、誰が言い出しのかわかりませんが、にわかにiBeaconがネットニュースで取り上げられ話題になってきています。BLEを利用した近接位置検出を決済に利用する会社などもあるためか、NFCと混同したり、魔法の杖のように語るなど、無知もいい加減かんべんして欲しいので、簡単にiBeaconとiOSでの使いかたを簡単にまとめます。 サンプルアプリのソースコード iBeaconとは iBeaconはAppleの登録商標です。 Apple - Leagal - Trademark List, iBeacon™ location and proximity detection technology。この説明にあるとおり、位置と近接検出技術です。 Bluetooth LEには、デバイスが自分を発見してもらうために周囲にパケットをブロードキャストする機能がありま

    raimon49
    raimon49 2013/12/21
    4sと5以降でBluetoothチップの消費電力が全然違う。知らなかった。
  • iOS7ステータスバー対策まとめ - Qiita

    iOS7ではスタースバーは透明、ナビゲーションバー、タブバー、ツールバー、検索バー、スコープバーは半透明。一般的なルールとしてコンテンツの上にこれらのバーを被せることを想定しスタースバーの下に何もバーがないならコンテンツはフルスクリーンコンテンツにすべき。とある。 iOS7 フレームワーク判定 iOS 7 UI Transition Guideにはこんなやり方が書いてある。場合によってはバージョンよりもNSFoundationVersionNumberを使うほうが意図が明確になる。 if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { // Load resources for iOS 6.1 or earlier } else { // Load resources for iOS 7 o

    iOS7ステータスバー対策まとめ - Qiita
    raimon49
    raimon49 2013/10/02
    iOS 6との互換対応も
  • UITableViewについて — ios-practice 0.1 documentation

    UITableViewについて¶ TableViewにおいていくつか気をつけておくと良いことがあります。 下記を参考に書いています。 iOS開発におけるパターンによるオートマティズム Pro iOS Table Views timd/Pro-iOS-TableViews Cellの表示更新を別のメソッドに分ける¶ tableView:cellForRowAtIndexPath: のdelegateメソッドでそれぞれのUITableViewCellを生成しますが、 このメソッド内で、Cell内容を更新する処理を直接書くのは避けましょう。 - (void)updateCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath { // Update Cells } - (UITableViewCell *)tableVie

  • いまさら聞けないRetina対応のための「ピクセル」の話

    ピクセル密度とピクセル比の関係 ピクセル密度は、数が多ければ多いほどスクリーン上で鮮明な描画ができるわけですが、上述したピクセル比とは直接関連しないものです(と考えています)。たとえば、Galaxy S IVのようにピクセル密度は441ppi、ピクセル比は2という端末もあれば、HTC Oneのように、ピクセル密度は468ppiだが、ピクセル比は3という端末もあります。 ※両方とも実機で検証したわけではないので、Wikipediaの情報が正しければの話ですが。 ※ピクセル比とは違うものですが、それと似た単位であるdppx (dots per pixel unit)では、CSSで定義された1インチが96pxになるため、1dppx = 96dpiになります。 ピクセル比に似た値「dp」とwindow.devicePixelRatio Androidの密度非依存ピクセル「dp」 Density-i

    いまさら聞けないRetina対応のための「ピクセル」の話
    raimon49
    raimon49 2013/04/03
    デバイス・ピクセル比(device pixel ratio)、ピクセル密度(pixel density)、Androidアプリにおける密度非依存ピクセル単位dp(Density-independent Pixel)について。用語整理として良くまとまっており秀逸。
  • Objective-C フラグメントシェーダー事始め

    iPhone アプリで使うボタン画像を 1 色だけ用意してシーンに合わせて色を変えて使えたなら、矢印みたいな単純な画像を 1 枚用意するだけでいろんなプロジェクトでも使えるし、ユーザーに背景色を選んでもらってそれに合わせてボタンの色を変更したりできて便利そうです。 そう思って調べてみたところ、CIFilter で画像をモノトーンに変換する 方法が見つかりました。 たしかにこれでも色を単調化できたのですけど、単調化で使う色をベースにして、黒ほど黒に、白ほど白に、表現されるため、色があるほど全体的に指定した色よりも暗く仕上がるところが気になりました。 特に、黒は黒として表現されるため、写真の変換にはいいのですけど、ボタンのような画像には少し勝手が悪いように感じます。 既存のフィルタが合わないとなると、自分で画像を調整するしかなさそうですけど、用意された画像を 1 ピクセルずつ処理して調整するに

    raimon49
    raimon49 2013/03/14
    デバッグ用マクロ
  • iPhone で 3D CG! OpenGL ES を使ってみよう - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 最近 iPhone を買った勢いで iPhone プログラミングを始めました。これまでも iPod touch があったのでその気になればできたのですが、 Objective-C や Cocoa を覚えるのが面倒くさくて手を出していませんでした。しかし、 iPhone を使っているうちに面白い題材に気付いたのです。そう、 OpenGL です。 実は私は数年前までは

  • 「使ってもらえるアプリの考え方」スマホデザイン会議 2012 忘年会スライド

    アプリ製作はフルセットから、コンサル、すでに作ってしまったUIのレビューまで、お気軽に fukatsu@gmail.com まで。

    「使ってもらえるアプリの考え方」スマホデザイン会議 2012 忘年会スライド
    raimon49
    raimon49 2012/12/26
    とてもためになる。こんな資料が無料で読めてしまうのは凄い。
  • Cocoaの日々: 下からせり上がってくる非モーダルなカスタムダイアログを作る

    実装 まずダイアログを管理する CustomDialogViewController を用意する。 #import "CustomDialogViewDelegate.h" @interface CustomDialogViewController : UIViewController { NSString* labelText_; NSString* buttonTitle_; id delegate_; UILabel* label_; UIButton* button_; } @property (nonatomic, copy) NSString* labelText; @property (nonatomic, copy) NSString* buttonTitle; @property (nonatomic, assign) id delegate; @property (no

    Cocoaの日々: 下からせり上がってくる非モーダルなカスタムダイアログを作る
  • アプリケーションディレクトリの構造とアクセス方法 - プログラミングノート

    iOSではデータの保存場所として特定のディレクトリを利用することができます。 Best Albumではサムネイル画像、オリジナル画像を全てキャッシュディレクトリに保存しているのですが、パフォーマンス的に全く問題がなく、今後活用する機会も増えそうなのでまとめておきます。 ディレクトリ構造 /Documents アプリ固有のデータファイルを保存するディレクトリ (バックアップされる) /Library/Preferences アプリ固有の環境設定ファイルを保存するディレクトリ (バックアップされる) NSUserDefaults or CFPreferencesAPI経由で読み書きする /Library/Caches アプリ固有のサポートファイルを保存するディレクトリ (バックアップされない) /tmp 一時ファイルを保存するディレクトリ (バックアップされない) パスの取得 上記ディレクトリ

    アプリケーションディレクトリの構造とアクセス方法 - プログラミングノート
    raimon49
    raimon49 2012/10/30
    ファイルシステム系の専用メソッド
  • iOS でデータを永続化する方法 - A Day In The Life

    iOS データ設計入門の続きです。前回は iOS であつかうデータ全般について書きましたが今回はデータをフラッシュドライブに保存する方法について説明します。 データの永続化って何? メモリにあるデータはアプリを終了すると消えてしまいます。 アプリを終了しても残しておきたいデータはフラッシュドライブに保存する必要があります。メモリにあるフラッシュドライブに保存することをデータの永続化といいます。永続化されたデータはフラッシュドライブが壊れない限り永続的に保存され残ります。以降 iOS でフラッシュドライブがどのように管理されているのかと、データを永続化するのにどのような方法があるのかについて説明していきます。 フラッシュドライブを構成する3つの領域 データを永続化する方法を説明する前に iOS でフラッシュドライブがどのように管理されているか見ていきましょう。 iOS ではフラッシュドライブ

    iOS でデータを永続化する方法 - A Day In The Life
    raimon49
    raimon49 2012/10/30
    NSHomeDirectory()以下のファイル構成、役割