背景 画像の大きさをコードでリサイズしたかったのでUIImageのリサイズ方法を調べた。 やり方 //UIImageのリサイズメソッド - (UIImage *)resizeImage:(UIImage *)image rect:(CGRect)rect { UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0.0); […
背景 Xcodeを5.1にしたら便利なプラグインが使えなくなって発狂した。 解決方法 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/[各プラグインフォルダ]/Contents/Info.plist を開いて DVTPlugInCompatibilityUUIDsキーの値に A2E4D43F-41F…
背景 iOS7.1のリリースに併せてXcodeのバージョンを5.1にアップデートし以前のXcodeで正常にビルドできていたプロジェクトをXcode5.1でビルドしてみたところ、あるコードの箇所で undefined symbols for architecture armv64 という見慣れた感じのArchitectu…
背景 いつものように申請作業をしていたら、Validateの際に Creating a new Signiant Transfer Engine because the previous transfer had to be canceled. This session is at risk of running out of availble system resources. という警告が出た。 警告…
背景 Xcodeのビルドエラーで$(SRCROOT)などの環境変数が出てきて、それがどこの階層を示しているのか分からなくて困っていたのでやり方を調べた。 やり方 Xcodeの[TARGETS]-[プロジェクト名]-[Build Phase]タブを選択してTarget Dependenciesをクリック。 そ…
背景 前回の記事で紹介したCGRectOffset関数を皮切りにCGGeometryって便利だなと思って簡単に調べてみました。 関数紹介 CGSizeEqualToSize bool CGSizeEqualToSize ( CGSize size1, CGSize size2 ); 指定した2サイズが等しいか判定する。 サンプル CGSize s…
経緯 下記のように赤いViewのスグ隣に青いViewを配置したいとする。 今まではCGRectGet系メソッドを使って下記のようにやっていた。 //赤いViewの配置 UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(60.0f, 150.0f, 100.0f, 100.0f)]; redVie…
経緯 プロジェクト内にフォルダを作成して、そのフォルダ内にある画像を読み込む際にプロジェクト内で作成したフォルダはコンパイラ上では ホーム/[アプリ名.app]フォルダ直下にリソースが展開されてしまう。 //[アプリ名.app]フォルダ直下にsampleの3つの画…
経緯 メソッドの遅延実行に今までperformSelector: withObject: afterDelay: を使用していたのだが呼び出すメソッドの引数が複数ある場合に困っていた。 呼び出すメソッドの引数を配列で受け取るようにとかすれば良いのだろうけど、そのためだけに仕様を変更…
事象 iOSアプリでデータを差し替えるのに申請しないといけないのが面倒だったため、WEBシステムと連携させて新しいSQLiteをダウンロードしてアプリ内の既存SQLiteと差し替えて対応していた。 しかしiOS7の端末でSQLiteの差し替えを行うとクラッシュしてしま…
UIViewやUIButtonなどに枠線をつけたりする方法を忘れて毎回ぐぐっているのでメモ。 やり方 UIView *layerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; layerView.center = self.view.center; //枠線 layerView.layer.borderWidth = …
ローカルな定数の定義 #define FIRST_NAME @"hachinobu" でなく static NSString * const kFirstName = @"hachinobu"; を使う。 理由は#defineでは型情報がないことと、誤って再定義されてしまう可能性がある。 グローバルな定数の定義 //ヘッダーファイル内…
iOS7でNavigationControllerを使用していない場合は、ステータスバーと描画しているViewが下記のように重なってしまう。 私が行った対処法はViewControllerのselfのViewの上にもう一つ同じ大きさのBaseとなるViewを配置し、そのBaseViewの上に表示したいView…
縦画面、横画面に応じてレイアウトの変更などが必要な場合に端末の現在の向きを取得したい場合が多々ある。 そんな時には下記のように取得する。 UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; viewWillAp…
UILabelを上寄せにしたい場合がある。 その場合、OHAttributedLabelやTTTAttributedLabelなど便利なライブラリがあるけど、ただ単に上寄せしたいだけならばUILabelの高さを適切なサイズに変更してあげれば上寄せになる。(上寄せというか高さを文字が入るぎり…
若干の出遅れ感を残しつつ去年の振り返りと今年のやるべき事を整理してみる。 〜2013年のエンジニアライフを振り返る〜 まず、去年を振り返るうえで重要だと思われるキーワードは下記3つ。 勉強会 GitHub 堤修一さん これらについて1つずつ振り返っていくこ…
題名の通りaddGestureRecognizerしたViewにUIButtonをaddSubviewした際、iOS5系ではUIButtonを押下してもEventが呼ばれずUITapGestureRecognizerにフックされてしまった。 問題が起きるコード #import "ViewController.h" #import "AppDelegate.h" @interfac…
plistからデータを読み込んでオブジェクト化する時はNSPropertyListSerialization propertyListWithData: options: format: error:を使うと便利。 例えばPerson.plistを作成したとする。 内容は下記のようになっている。 Person.plist コード - (void)viewDi…
アプリをビルドした際にコンソールにUnbalanced calls to begin/end appearance transitions...と出力された。 これはviewDidLoadやviewWillAppearで別ViewControllerへの遷移コードを書いていると発生する。 私はズバリ、viewWillAppearで条件に応じて別Vie…
iOS7でUITableViewCellのUITableViewCellAccessoryTypeをUITableViewCellAccessoryDetailDisclosureButtonに設定してビルドしてみるとiOS6の時のようにボタンだけでなく、矢印も一緒に表示されてしまった。 矢印が不要だったのでUITableViewCellAccessoryTyp…
今更ながらStoryboardの読み込み方法。 前提としてStoryboardの読み込みたいViewConrollerにて[Show the Identity Inspector]の[Storyboard ID]に一意のIDを振っておく。 読み込み方は //Sub.storyboardの読み込み UIStoryboard *storyboard = [UIStoryboard…
CoreDataでlikeを使用して文字列を検索する際にワイルドカードとなるアスタリスク*と?自身が含まれるものを検索したい場合はバックスラッシュでエスケープする必要がある。 //検索対象文字 NSString *keyword = @"*"; 検索対象文字をエスケープしてあげる k…
NSStringクラスのカテゴリを作成し該当の文字列が空かどうか判定するisEmptyメソッドを作った。 - (BOOL)isEmpty { if (self.length > 0u) { return NO; } return YES; } 上記メソッドを使用して空文字である場合と空文字でない場合の処理を下記のように分岐…
iOS7からスワイプすることで戻る機能が標準になりました。 いくつかのアプリではこの機能を無効にしたいと思うものもあると思います。やり方は各ViewControllerで if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecogn…
前回の記事(http://d.hatena.ne.jp/hachinobu/20131010/1381364057)に関連するのかもしれないがiOS7のStoryboardでUIViewControllerにUIToolbarを配置してビルドしたらUIToolbarの領域の色が濁ってた。 これの回避方法としてはtranslucentプロパティにNOを設…
iOS7のStoryboardでUIViewControllerのviewの上にUIWebViewを配置してビルドしてみると、なぜか下にスクロールでき黒い領域が発生した。 バグなのかどうか根本的な原因はよく分からないのだが、解決方法としてはUIViewControllerのviewとUIWebViewの間にview…
テストケースを書く際にOCMockを利用し始めたので基本的な使い方をメモ。1.テストケース対象クラス内で他のクラスのメソッドを呼び出している結果を書き換える //テスト対象クラス内で呼び出しているOtherクラスのモックを作成 id mock = [OCMockObject mock…
幾つかの画面(ViewController)で共通のUIActionSheetを使い回したかったので共通のUIActionSheetを管理するシングルトンクラスを生成して、そのシングルトンクラスのUIActionSheetを表示させたいViewControllerでshowFromBarButtonItemしていた。 iPadではBa…
JSONデータを扱う際にJSONデータと同じキーのプロパティ変数を持つ自作クラスを作成してJSONデータをパースして保存することがよくある。 その際に自作クラスのプロパティ変数がJSONデータのキー値となるので、プロパティ変数名の一覧が取れると便利。やり方…
これまでxibファイルで[Top Bar]からNavigationBarを選択して、そのNavigationBarの下にViewを配置していたのだけれども、 iOS7でビルドするとNavigationBar領域に配置したViewが食い込んでしまっていた。コードの場合は下記で対応。 - (void)viewDidLoad { …