Objective-Cの@synthesizeを自分で実装する

Objective-Cで@propertyと@synthesizeを使っていると、値を取得するタイミングや値を設定するタイミングでちょっとした処理をしたいことがある。ちなみに記事タイトルは正確ではなく、本記事はどちらかというと「Objective-Cでプロパティのセッターとゲッターの書き方」ぐらいのスタンスです。すみません。

続きを読む Objective-Cの@synthesizeを自分で実装する

CGBitmapContextCreate: unsupported parameter combinationというエラーが出る

Objective-Cで、CGRect型のmyframeのサイズの画像を生成しようとするとエラーが起きた。

CGContextRef context = CGBitmapContextCreate(NULL, myframe.size.width, myframe.size.height,
                                             8, myframe.size.width * 4,
                                             colorSpace, kCGImageAlphaPremultipliedFirst);

起きたエラーの内容は以下のとおり。

<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 32 bits/pixel; 3-component color space; kCGImageAlphaPremultipliedFirst; 806 bytes/row.

原因は、CGRect型のwidthやheightはCGFloat型なので、”myframe.size.width * 4″の箇所であるべき数値と異なる数値が計算されてしまっているようだった。
なので、このようにコードを書き換えたら解決した。

int width = myframe.size.width;
int height = myframe.size.height;
CGContextRef context = CGBitmapContextCreate(NULL, width, height,
                                             8, width * 4,
                                             colorSpace, kCGImageAlphaPremultipliedFirst);

本来はfloor()とかで数値を切り捨てるんだろうけど、とりあえずはこれで動いた。

[Xcode4,Objective-C++] OpenCV2.4.1をiOSで使う

画像認識や画像処理をするのに大変便利なオープンソースのライブラリOpenCVをiPhoneやiPadでも使えるようにするためのメモ。もっとスマートなやり方があると思うので、ご存知の方はコメント欄で教えてください。

続きを読む [Xcode4,Objective-C++] OpenCV2.4.1をiOSで使う

Xcode4でShareKitを使う

twitter, facebook, Evernote, Flickrといった各種WebサービスへiOSアプリケーションからデータを流し込みたい場合、ShareKitを使うと便利だ。

Xcode4でShareKitを使うにあたって、日本語の解説があまりなかったようなので記事にした。結論を先に書くと、日本語のドキュメントを検索するより、公式ドキュメント(Installing sharekit)を参照した方が確実で早くて分かりやすい。

ちなみにググると出てくるhttp://getsharekit.com/のサイト上にリンクが貼られているShareKitはバージョンが0.2.1と極めて古い。最新の情報はすべてgithub上にあるのでそちらを参照するべき。

続きを読む Xcode4でShareKitを使う

Xcodeでシンタックスハイライトも入力補完も効かなくなる場合

Xcode3でもXcode4でも、入力中にいつの間にか気がついたら、シンタックスハイライトが無効になっていて、コード補完(サジェスト)も効かなくなってしまった場合の直し方は思っていたより簡単。

メニューバーの[Window]→[Organizer]からオーガナイザを開いて、[Projects]タブの中にある当該のプロジェクトを選択後、Derived Dataの項にある[Delete…]ボタンを押せばよい。それだけで直る。

自前で描画した内容がUIImageで ぼやける時の処置

このブログのアクセス解析で、検索されたワードを見ていると、「objective-c ぼやける」という組み合わせで当ブログにアクセスしている方がいた。おそらく、Objective-Cで描画した内容がぼやけている問題を解決したくて検索したのだろうな、と勝手に解釈して、その解決方法を書いておく。本稿の内容は、CGContextRefを指定したりして描画した内容をUIImage化した際にぼやける場合の解決方法である。

続きを読む 自前で描画した内容がUIImageで ぼやける時の処置

iOSアプリのバックグラウンド移行時にクラスごとに処理を分ける

Xcode4でMaster-Detail Application(Xcode3ではNavigation-Based Application)で新規作成したプロジェクトの場合、アプリケーションがバックグラウンドに移行した時にNavigationControllerが表示中のViewControllerのクラスによって処理を分けたい時がある。そんな時に処理を分ける方法。

続きを読む iOSアプリのバックグラウンド移行時にクラスごとに処理を分ける

ステータスバーとUINavigationBarを半透明にして領域を活用

ステータスバー(iPhoneの充電状況や時計が出てるところ)とUINavigationBarを半透明にすることで、そこの部分も含めて320×480の画面サイズをフル活用したい時がある。そんな時は以下のコードをはさめばよい

- (void)viewDidLoad
{
	[super viewDidLoad];
	self.navigationController.navigationBar.translucent = YES;
	[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; 
	[self setWantsFullScreenLayout:YES];
}