ぴよログ

↓に移転したのでこっちは更新されません、多分。

iOS

ISO8601拡張表記のNSStringをNSDateに変換する

iOSアプリで日付文字列をNSDateに変換する話です。よく知られているように、NSDateFormatterを使って変換をするのが一般的です。 NSDateFormatter* formatter = [NSDateFormatter new]; formatter.dateFormat = @"yyyy/MM/dd HH:mm:ss"; NSDate* date = [for…

Xcode:シミュレータなしでViewをプレビューする

Xcodeにはstoryboardを使って作り上げたViewをプレビューする機能があります。これを使うと、画面回転時、4インチと3.5インチの切替時、iOS7とそれ以前の切替時、それぞれのレイアウトを確かめることができます。 AutoLayoutでConstraintを付けた結果がどう…

CocoaPods: pod installが失敗する問題

今日(2014/02/04)1週間ぶりにぐらいに$ pod installしたら妙なエラーが出てライブラリのインストールができなくなりました。 エラーメッセージの最後はこんな感じでした。 Pull is not possible because you have unmerged files. Please, fix them up in …

笑顔やまばたきも!iPhoneカメラでカンタン顔認識

iOS

iOS5から使えるようになったCIDetectorがiOS7で更に進化し、笑顔やまばたき(目をつぶっているかどうか)を検出可能となりました。 すごく簡単に実装できる上に処理も遅くないのでいろいろな使い道があると思います。 下準備 まずCoreImageフレームワークを…

iOSシミュレータのアプリディレクトリ探しから開放される

iOSアプリでアプリケーションティレクトリを使うようなアプリだと、開発中やデバッグ中にそのディレクトリの中を確認したくなることってたくさんありますよね。 ですが、そのときに必要な行動は実機でもシミュレータでもとても面倒です。実機はコネクタで繋…

NSCopyingって何?

先日書いた「ペア要素をキーにしたNSDictionary」という記事でNSDictionaryのキーにしたPairクラスはNSCopyingプロトコルを実装するように書きました。 このNSCopyingに関してはこれまで詳しいことを知らなかったのでヘッダーやリファレンスで調べてみました…

ペア要素をキーにしたNSDictionary

NSDictionaryで複数要素をキーにしようというお話です。 普通の連想配列はキーとバリューで1つの組み合わせになりますが、片方が◯でもう片方が☆のときはこの値みたいなケースの場合は最初から用意されているデータ型では間に合わないことが多いです。 C++で…

XcodeインスペクタのState Config

UIButtonってタップ中の状態に色とか背景とか画像とか変えられますよね。てっきりコードでしか出来ないと思っていたらそんなことありませんでした。恥ずかしい。 このState Configを変えてから設定を変えると、そのStateに対して値が用いられるみたいですね…

画像付きUIButtonのレイアウト調整

UIButtonに画像をつけるとデフォルトでは画像の右側にテキストが回りこむような形でレイアウトされますが、このレイアウトはカスタマイズ可能です。 画像とテキストはそれぞれ独立して動かすことができますので、次のようなレイアウトを作ることも可能です。…

ARCを使ったiOS開発でのプロパティ名

こんな謎のビルドエラーに遭遇しました。 property's synthesized getter follows Cocoa naming convention for returning 'owned' objects どうやらnewから始まるプロパティ名は使用できないようです。エラーメッセージがわかりにくいので調べないとわかり…

CocoaPods使用プロジェクトで新しいConfigurationを作ったときの注意

テストコード実行時のみ通るコードを書くためにTesting用のConfigurationを作成してビルドしたら次のようなリンクエラーがでました library not found for -lPods CocoaPodsを使っているプロジェクトだったのですが、CocoaPods周りの設定が新しいConfigurati…

Xcodeでテストのときのみ特定のコードを実行する方法

テストコードのときのみ実行したいコードってありますよね?例えばサーバーのURLを変えたり、テスト用のデータを用意したりいろいろな用途があり得そうです。 シンプルにやるにはプリプロセッサマクロを使ってこんな風にやるのがよさそうです。 - (void)meth…

iOS用グラフ描画ライブラリCorePlot超入門

iOS(とかOSX)でグラフを書けるCorePlotいいよー。オプションとかいろいろあって煩雑だけどそこはさておいて簡潔にまとめてみようと思います。 まずは導入編 CocoaPods使いましょう。 pod 'CorePlot' からの$ pod installでいけます。 散布図、折れ線グラフ…

UIImageの色相をフィルターで変えるには

iOSのアプリを開発していてこんな要望がありました。 「撮影した写真を半透明にした上で色を少し変えて出したいから、ちょうどいい値を探したい」 どの程度半透明にするかはalpha値に対応したスライダーをおけばいいなというのはすぐにわかりましたが、色を…

iOSで他のUIViewの下(裏)に隠れているボタン等を押させる

先日、この図に相当するケースでUIViewに隠れているボタンを押せるようにしたいということがありました。 何も指示しないと手前のUIViewがイベントを受け取ってしまうのでその下にあるUIButtonはタップすることができませんが、UIViewのuserInteractionEnabl…

iOSでUIButtonの選択時の背景色をグラデーションにする

iOS

UIButtonの背景色をグラデーションにする方法は簡単です。適当にググればでてきますし。ですが、ボタンをタップしたときの色をグラデーションにする方法はちょっと面倒でトリッキーだったので紹介します。 その前に、背景色を普通にグラデーションにする方法…

AVFoundationを使ったカメラ機能はちゃんとメモリを開放しましょう

こちらを参考にAVFoundationを使ったカメラを実装したのですが、このやり方だとどうもメモリを圧迫するということがわかりました。 iOSのカメラ機能を使う方法まとめ【13日目】 | Developers.IO カメラ機能を使うビューに移動→戻る、を繰り返すとだんだんと…

忘れがちなXcodeの環境変数はコマンドで一覧できる

XcodeでHeader Search PathやLibrary Search Pathを設定するときには環境変数を使ってマシンや人ごとの差を吸収すべきなんですが、環境変数名が覚えにくいので何度も調べる羽目になります。 そんなとき便利なので、xcodebuildコマンドを使って環境変数一覧を…

iOS用UIテストフレームワークKIFで色々な要素をタップさせる方法

この間のポストでKIFでフレームワークの導入方法と簡単な使い方について書いたけど、そこからさらに使ってみてもうちょっと使い方がわかったのでそれを書いてみます。 その前に先日の記事。 XCode5対応!KIFでiPhoneアプリの受け入れ(統合)テスト - PILOG …

【失敗】iOSの統合テストフレームワークSubliminal

先日のKIFの記事に続いてSubliminalというフレームワークを試そうと思ったのですが、GithubのREADMEにしたがって1時間ぐらい格闘しても動かすところまでいけませんでした。 inkling/Subliminal · GitHub CocoaPodsに対応していないので最初に動かすまでのセ…

XCode5対応!KIFでiPhoneアプリの受け入れ(統合)テスト

最近初めてiPhoneアプリでテストを書く機会がありました。テストを書くならこの際ユニットテストだけではなく画面遷移を含めたテストも書いてみようと思い、環境を整えてみました。 テストフレームワークの選択肢 kif-framework/KIF inkling/Subliminal Test…

(追記有り)XCodeのファイルに挿入されるコメントが邪魔。変えたい。

(追記)この方法では全てのコメントを編集できるわけではないようです。わかったらまた書きます。 XCodeで新しくプロジェクトを作ったりファイルを追加したりするとファイルの上部にこんなコメントが挿入されますよね。 // // AppDelegate.m // AppName // //…