Objective-C

UIButtonをUITableViewCellっぽいハイライトにする

標準のUIButtonのSystemだとハイライトが文字が白くなるだけなので、それをUITableViewCellっぽくするというtipsです。 実装方法は、UIButtonのサブクラスを作ってStoryboardでカスタムクラスで指定するだけです。 1. UIButtonのサブクラスを作る @interface…

Storyboardのsize classを使ってiOS7と8に対応させるにはAny×Anyじゃないとダメ

iPad用のアプリを作るときの話です。 iPadのsize classは縦向きも横向きもRegular/Regularってことで、そのsize classでせっせと画面を作ってて、iOS8のSimulatorだとちゃんと表示されてました。それで2画面ぐらい作ったあと、ふと、iOS7のSimulatorで動かし…

UICollectionViewCell上のViewにAutoLayoutは設定できない?

UICollectionViewCell上のViewにAutoLayoutをしたら下記のようなwarningが出てAutoLayoutが効きません。環境はiOS8、Xcode6です。 SampleApp[3298:353432] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the …

viewWillTransitionToSize: withTransitionCoordinator:を使うときはsuperを呼ぶ

画面の回転のイベントで、willRotateToInterfaceOrientation:duration:がありますが、iOS8からはdeprecatedになっています。で、代わりに、viewWillTransitionToSize:withTransitionCoordinator:を使えと書いてあるんですが、ヘッダファイルのコメントにsupe…

iOS8でinterfaceOrientaionがdeprecatedになったんだけど代わりのプロパティが分からない

間違ってたのでいろいろ追記 Xcode6でUIViewControllerのinterfaceOrientationプロパティを使うとiOS 8.0からdeprecatedですよのwarningがでます。 でも、代わりに判断できるプロパティがiPadだと分からないって話です。誰か教えて ※ 追記1 statusBarOrienta…

NSDateを例にSwiftの初期化を理解してみる

Objective-Cならこう書くよね。 // クラスメソッド NSDate *date1 = [NSDate date]; // インスタンスメソッド NSDate *date2 = [[NSDate alloc] init]; // objcではこれはあんまり使わないけど じゃあSwiftは? var date1 = NSDate.date() var date2 = NSDat…

iBeaconのエントリポイント

1. Beaconに関するCLLocationManagerを作成する // 以下のメソッドの内容をinit系の処理で呼び出す - (void)initLocaitionService { // CLBeaconRegionを作成 // このとき、ProximityUUIDは、beacon製品で提供されたUUIDを使用する。 // identifierについて…

Objective-Cでレビューしたときの指摘事項メモ

プロパティにアクセスするときに、_hogeなのか、self.hogeなのか統一した方がよくて、readonlyのプロパティだとか、setter、getterがよく分かってないなら基本的にself.hogeでアクセスする。 やたらとNSLogの書き残しが多いから、ちゃんと自分が見たいログが…

TableViewのコードをクリーンにまとめる

Clean table view code - Lighter View Controllers - objc.io issue #1 の訳です。 TableViewはiOSアプリにおいて色々なことができるパーツです。 それゆえ、直接的、あるいは、間接的なテーブルビューのタスクに関するコードが多くなってしまいます。例え…

ViewCotrollerを軽くする

objc.io何がいいかと言うと、数日間APIをいじくり回してやっとわかる使い方のコツとか内部的な動きがサラっと書いてたり、実装のアプローチを複数紹介してたり、実際にアプリにいかすとこにトコトンフォーカスしてて、なんかスゲー編集力を感じる。— Taku Ok…

iOS7のUITableViewでセルの下のボーダーが右側に少しずれる

セルの左側20pxぐらいぶんだけ、右側にずれちゃうんだけど、Storyboardのseparator Insetで解決しました。 直し方は、stackoverflowに書いてありました。 uitableviewcell - Is there a way to make UITableView cells in iOS 7 not have a line break in th…

iOSでアプリケーションのディレクトリ名が変わってしまう

フルパス名をキーに利用していたら・・・ ダウンロードした画像をキャッシュするクラスの設計と実装について - 24/7 twenty-four seven のエッセンスを参考にしながら、画像をキャッシュするアプリを作っていてはまったのでメモ。 画像のフルパス名のハッシ…

UITableViewでアニメーション付きで行を削除しつつ表示を更新するやり方

1行ごとに色を変えてたり、セルに行番号とか表示してるとdeleteRowsAtIndexPaths:だけでは、表示が更新されないことに気づきreloadData呼んだ。 でも、reloadData呼ぶと削除アニメーションが消えちゃうのであれーどうやるのかなーと思って調べたけど、意外と…

Objective-CでAOP (アスペクト指向) ができるライブラリ

※ 今回は試しにQiitaにも投稿してみました。 Aspects Objective-Cでインターセプター入れて横断的に処理入れてみたいなことってしたいなと思う場面はあったけど、共通処理を行うクラスを使ってそれを継承するみたいなやり方してた。共通の処理ってどんなもの…

iphone_dev_jp 東京 feat. Ben Zotto にいってきた #idevjp

iphone_dev_jp 東京 feat. Ben Zotto (Penultimate開発者) - connpass に行ってきました。 英語の発表だったけど、同時通訳の人がうまくて結構理解できました。 (まぁ、こんな画像最適化するようなアプリ作ることはないとは思うけどw) 画像とは関係ない質…

NSDecimalNumberで整数なのか小数なのかチェックする

色々やり方はあるかもしれないけど、これでいいか。 整数は小数点をもたないので切り上げても、切り捨てても同じ値になるのを利用。 - (BOOL)isInteger:(NSDecimalNumber *)num { // 少数第1位を切り捨て NSDecimalNumber *floorNum = [num decimalNumberByR…

XCTestのtestメソッド名に日本語をつけてはダメ

XCTestでtestがfailedしているのに、XCodeはTest Succeedと元気に通知してくるので、 なんじゃらほいと思ってたら、test名に日本語を使っていたのがダメな原因でした。 テスト名が半角英語の場合 - (void)testFail { XCTFail(@"失敗"); } このように、ちゃん…

Objective-C + Node.js + socket.io

iPhoneアプリから(not safari)socket.ioと通信したいなーと思っていて、 良い記事をみつけたので早速マネしてみました。iPhoneアプリでNode.js - webネタ基本的には socket.ioとObjective-Cで通信したい そのためにはObjective-C側では、pkyeck/socket.IO-ob…

CGPDFBox

CGPDFBoxが一体何を表してるか分からなかったけど、全部試してみたら何となく分かったかも。 http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGPDFPage/Reference/reference.html全種類で試して、CGPDFPageGetBoxRectし…