以下の画像のように、UITableViewの背景を透過にしてセルを半透明にする方法。
タグ: Objective-C
Objective-Cの@synthesizeを自分で実装する
Objective-Cで@propertyと@synthesizeを使っていると、値を取得するタイミングや値を設定するタイミングでちょっとした処理をしたいことがある。ちなみに記事タイトルは正確ではなく、本記事はどちらかというと「Objective-Cでプロパティのセッターとゲッターの書き方」ぐらいのスタンスです。すみません。
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でShareKitを使う
twitter, facebook, Evernote, Flickrといった各種WebサービスへiOSアプリケーションからデータを流し込みたい場合、ShareKitを使うと便利だ。
Xcode4でShareKitを使うにあたって、日本語の解説があまりなかったようなので記事にした。結論を先に書くと、日本語のドキュメントを検索するより、公式ドキュメント(Installing sharekit)を参照した方が確実で早くて分かりやすい。
ちなみにググると出てくるhttp://getsharekit.com/のサイト上にリンクが貼られているShareKitはバージョンが0.2.1と極めて古い。最新の情報はすべてgithub上にあるのでそちらを参照するべき。
Xcodeでシンタックスハイライトも入力補完も効かなくなる場合
Xcode3でもXcode4でも、入力中にいつの間にか気がついたら、シンタックスハイライトが無効になっていて、コード補完(サジェスト)も効かなくなってしまった場合の直し方は思っていたより簡単。
メニューバーの[Window]→[Organizer]からオーガナイザを開いて、[Projects]タブの中にある当該のプロジェクトを選択後、Derived Dataの項にある[Delete…]ボタンを押せばよい。それだけで直る。
自前で描画した内容がUIImageで ぼやける時の処置
このブログのアクセス解析で、検索されたワードを見ていると、「objective-c ぼやける」という組み合わせで当ブログにアクセスしている方がいた。おそらく、Objective-Cで描画した内容がぼやけている問題を解決したくて検索したのだろうな、と勝手に解釈して、その解決方法を書いておく。本稿の内容は、CGContextRefを指定したりして描画した内容をUIImage化した際にぼやける場合の解決方法である。
iOSアプリのバックグラウンド移行時にクラスごとに処理を分ける
Xcode4でMaster-Detail Application(Xcode3ではNavigation-Based Application)で新規作成したプロジェクトの場合、アプリケーションがバックグラウンドに移行した時にNavigationControllerが表示中のViewControllerのクラスによって処理を分けたい時がある。そんな時に処理を分ける方法。
ステータスバーとUINavigationBarを半透明にして領域を活用
ステータスバー(iPhoneの充電状況や時計が出てるところ)とUINavigationBarを半透明にすることで、そこの部分も含めて320×480の画面サイズをフル活用したい時がある。そんな時は以下のコードをはさめばよい
- (void)viewDidLoad { [super viewDidLoad]; self.navigationController.navigationBar.translucent = YES; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; [self setWantsFullScreenLayout:YES]; }
UITableViewCellの背景を透過する
UITableViewCellの背景を透過する、あるいは消す方法。
UITableViewCellのbackgroundViewに新しい空のUIViewを設定し、選択された時の色をなくせばいい。