iOS

JSON を jq で確認しやすくする CSNJQFormatter

普段アプリを作っていたアプリが取得した JSON データを Console に出力させています。このままでは改行がなくなっていたりシンタックスハイライトもなくて見づらかったのでこんなものを作りました。 griffin-stewie/CSNJQFormatter 以下のような文字列を返…

UITableViewController 以外で UIRefreshControl を使う方法 [リスクあり]

Tweetie で有名になった Pull to refresh ですが iOS 6 から UIRefreshControl として OS 標準で追加されました。残念ながら UIRefreshControl は UITableViewController と一緒に使うしかまっとうな方法はありません。UIViewController + UITableView のよ…

Blocks のアレゲなシンタックスのための Xcode の Snippet

Blocks のアレゲなシンタックスは有名で非常に覚えにくいです。なので有名な OSX / iOS アプリ開発者のココロの叫びを表したサイトがあるのはもはや有名ですね。ココに書かれているシンタックスを Xcode の Snippet にして置いてます。 griffin-stewie/Xcode…

UILabel の文字色をハイライト時に暗めの色にする

UI のインタラクションとしてテキストカラーを少し暗めにしたいことがあったのでその時に使った方法です。 HSB(HSV) で元の色の Brightness を変更する 先に書いたとおり暗くしたいだけなので RGB でどうこうしようとするのはめんどくささこのうえないです。…

HSB(HSV) のすすめ

みなさんは普段アプリの開発の際にどのような形で色を指定していますか?個人的な経験と予想では [UIColor colorWithRed:0.251 green:0.514 blue:0.663 alpha:1.000] のような RGB での指定だったり、カテゴリやマクロで拡張して #4083A9 のような Hex 指定…

ALAssetsLibrary を触るときの権限取得を事前に確認する

iOS

ちょっと不便 ALAssetsLibrary を触るときにはユーザーに AssetsLibary へのアクセスを許可してもらわないといけません。個人的には先にアクセス許可の伺いを立ててからその結果に応じてアプリとしての振る舞いを切り分けたいと思います。しかし、ALAssetsLi…

Ono '斧' を触ってみた

先日、AFNetworking や NSHipster で有名な Mattt が Ruby の Nokogiri 風の XML & HTML パーサー Ono 斧 を公開しています。 早速少しだけ触ってみた CSS Selector でのパースをサポート XPath での指定なら今もいくつかライブラリがありますが CSS Selecto…

CXCKeyValueObserver をパクった CSNNotificationObserver ってのを作った

表題の通りです。 2週間くらい前に id:cockscomb さんが CXCKeyValueObserver というライブラリをリリースしていました。これはどんな感じのライブラリかっていうと KVO の 監視開始/終了 忘れず安心に実行できる 複数 KVO を使っても通知を受けた後の処理が…

App Switcher に表示される View を差し替える補助ライブラリ MMAppSwitcher

以前アプリの画面を開いているアプリケーションのプレビュー画面から隠すというものを書きました。先日たまたま見つけたライブラリがこのような処理を補助するものがあったので一応ご紹介。 MMAppSwitcher というライブラリです。使い方的には MMAppSwitcher…

iOS アプリ開発に関わる人にぜひ読んで欲しい本[の宣伝]

僕は iOS アプリのコーディングをやっていて主にそっち方面のブログエントリを書いていますが今日は本の紹介というかタイトル通り宣伝です。 アプリ開発をやってる僕ですが結構 UI / UX は気になるタイプで仕事中もデザイナーにいちゃもんつける面倒くさいや…

dispatch_source の DISPATCH_SOURCE_TYPE_TIMER で timeout 処理を実装する

先日、x秒たったらある処理をキャンセルするといういわゆるタイムアウト処理を実装する必要があったときに dispatch_source を使ってハマったので備忘録。 当時ググっても繰り返し一定間隔で処理を動かすサンプルはすぐ見つかったのでそれをベースやっても期…

UICollectionView で UITableView のセクションヘッダー風の SupplementaryView を実装する

UICollectionView で UITableView のセクションヘッダー風の SupplementaryView を実装する UICollectionView は昔なら UITableView を使って頑張って実装していようなグリッドレイアウトな UI を UITableView ライクな I/F で実装できる素敵なやつです。UIT…

はてなインターンのサンプルコードを読んでの感想

はてなさんが はてなインターンで利用したiOSアプリ等のサンプルコードを公開しました - Hatena Developer Blog という素敵なサンプルコードを公開してくれたので、好き勝手に感想を書いてみたいと思う。本来は Web アプリ側も動かしたかったんだけど、ウマ…

アプリの画面を開いているアプリケーションのプレビュー画面から隠す

iOS 7 以前でも、アプリ実行中にホームボタンを押してまた、そのアプリに戻ってきた場合には OS が作成した画面のスクリーンショットが表示されていました。プライバシーが気になるようなアプリでは Home に戻る直前の画面をそのまま次回前面になったときに…

Remote Push からの Background Fetch を試してみた

前回は Background Fetch を試してみました。この方法ではアプリだけの実装でバックグラウンドで通信処理等を走らせる事ができますが、実行タイミングが OS 側の学習によるもので任意のタイミングでは発動させることができません。iOS 7 からは Background F…

Background Fetch を試してみた

先日、「M7 と少しだけ戯れてみた」というエントリでモーションアクティビティを試しに触ってました。その流れで自分の歩数を定期的に Tweet するようにしてみたらおもしろいかなぁと思って折角なので iOS 7 から導入された Background Fetch を使って見よう…

M7 と少しだけ戯れてみた

9/20 に無事に iPhone 5s Space Gray 64GB を手に入れました。前日の14時過ぎぐらいからヨドバシ梅田界隈をうろうろし、閉店少し前から列に並び、希望端末の整理券1番を Get し、9時くらいには現品 Get しました。 CMStepCounter と CMMotionActivityManager…

ボタンのタップ反応エリアの拡大方法

ボタンのタップ反応エリアの拡大方法 アプリを作っていると、実機で触ってみたときに「ボタンが押しにくい」とか「タップのあたり判定がせまい」とかってあるかと思います。たいていの場合はボタンに使っている画像が小さい等が原因だったりします。このよう…

こんな書き方できたんだ!?

今日貯めてた Reading List を見てたらこんな記事が。 New thing I do in code 例 以下のようなコードが動きます。 self.downloadButton = ({ UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; NSLog(@"%s %@", __PRETTY_FUNCTION__,…

CGRectDivide のすすめ

前回も座標系だったんですけど今回も座標系。 CGGeometry にはいろいろ地味に便利な関数が揃ってるんですけどあまり日の目を見ない気がするので CGRectDivide について書こうかと思います。 使い方と得られる結果が理解しにくい CGRectDivide は任意の Rect …

UIView の frame を Blocks を活用して変更する

昨日、なんで今までこれをやってなかったんだろう?と思ったこと。 frame 弄るのダルい UIView の layout 時に label.frame.origin.y = 5; とかしたいところですけど出来ません。 この程度の事で label.frame = CGRectMake(CGRectGetMinX(label.frame), 5, C…

複数の非同期処理を前の処理結果を受けとりつつ数珠つなぎに直列に書きたかった時に参考にしたコード

以前 @xcatsan さんのこちらの記事をさっきみてて思い出したので備忘録として。 以前、非同期で実行される処理の塊を直列に順序を決めて実行したいというシチュエーションがありました。そのときにぱっと浮かんだのは昨日の Cocoa 勉強会関西で@yashigani が…

最近よくやってる Blocks の使い方

Blocks 怖いような、便利なような。そんな物ですがみなさんはどんな感じに使っていますか? 僕は最近こんな感じのメソッドを実装して使ってます。 UINavigationController *nvc = [DetailViewController navigationBasedViewControllerWithConfigurationBloc…

簡単なバージョン番号の比較方法

最近、頑張って比較してるのにバグっている見たコードをみました。簡単な比較方法を知らない人もいるのかもと思って書いてみます。 たまに求められるバージョン番号比較 何らかの理由でバージョン番号の比較をしたいときってありますよね?○○バージョン以上…

Placeholder 付き UITextView

UITextView って UITextField みたいに Placeholder がないんですね。つい先日まで気づきませんでした。必要とするようなシチュエーションがないとかそのような UI が iOS 的にナシなのかなぁと思っていたらカレンダーアプリのイベント追加画面で Apple 自身…