バッジ描画ライブラリを公開
2011年9月29日木曜日 | Published in ios 4.3, ライブラリ開発 | 0 コメント
バッジ描画ライブラリを GitHub にて公開しました。
lakesoft/LKbadgeView - GitHub
バッジって何かというとメールの未読件数などで使われているアレ。
数字だけでなく文字列も表示できる。また背景色や文字色を変えたり、アウトライン(輪郭線)を付けられるようにした。
GitHubからプロジェクトをダウンロードし、その中から下記のファイルを自分のプロジェクトへコピーして追加する。
UIView のサブクラスなので生成してビューへ貼り付けるだけで使える。
(コード例)
色の変更の他、アウトラインの描画や水平位置の調整などが行える。
※上の図の灰色の背景色は説明の都合上、意図的に付けてある。
・LKBadgeViewWidthModeSmall にした場合は1文字だと丸になる。
・LKBadgeViewWidthModeStandard の場合は2文字までは同じ横幅となる。3文字以上はそれより拡がる。
デフォルトは LKBadgeViewWidthModeStandard。
アウトラインを描くには outline プロパティを YESにする。NOだと描画しない。色と線の太さを指定することができる(デフォルトは色=灰色、太さ=2.0)。
※上の図の灰色の背景色は説明の都合上、意図的に付けてある。
付属のサンプルを実行するとカスタマイズされた表示をひと通り確認できる。
右上のスイッチをONにするとアウトライン描画に切り替わる。
バッジの表示は UIBezierPath を使って drawRect: で描画している。文字は UILabel を使わず直接描画した。詳細はソースコードを参照のこと。
MIT ライセンスです。商用・非商用を問わず自由にご利用下さい。連絡も不要です(でもくれるとうれしい)。
lakesoft/LKbadgeView - GitHub
バッジって何かというとメールの未読件数などで使われているアレ。
数字だけでなく文字列も表示できる。また背景色や文字色を変えたり、アウトライン(輪郭線)を付けられるようにした。
インストール
GitHubからプロジェクトをダウンロードし、その中から下記のファイルを自分のプロジェクトへコピーして追加する。
LKBadgeView.m LKBadgeView.h
使い方
UIView のサブクラスなので生成してビューへ貼り付けるだけで使える。
(コード例)
LKBadgeView* badgeView = [[[LKBadgeView alloc] initWithFrame:CGRectMake(100, 200, 50, 20)] autorelease]; [self.view addSubview:badgeView]; badgeView.text = @"23";XIB に配置してそれを使ってもいい。サンプルアプリではこの方法を使っている。
@property (nonatomic, retain) IBOutlet LKBadgeView* badgeView; : self.badgeView.text = @"23";この場合はインスペクタのクラス指定を LKBadgeView にすることを忘れずに。
カスタマイズ
色の変更の他、アウトラインの描画や水平位置の調整などが行える。
水平位置
LKBadgeView のビューとしての大きさとは別に角丸のバッジがその中に配置される。この時の水平位置を指定することができる。@property (nonatomic, assign) LKBadgeViewHorizontalAlignment horizontalAlignment;左寄せ、中央揃え、右寄せの3種類を指定することができる。デフォルトは中央揃え(LKBadgeViewHorizontalAlignmentCenter)。
※上の図の灰色の背景色は説明の都合上、意図的に付けてある。
最小サイズ
横幅の最小サイズは2種類設定することができる。@property (nonatomic, assign) LKBadgeViewWidthMode widthMode;
・LKBadgeViewWidthModeSmall にした場合は1文字だと丸になる。
・LKBadgeViewWidthModeStandard の場合は2文字までは同じ横幅となる。3文字以上はそれより拡がる。
デフォルトは LKBadgeViewWidthModeStandard。
色
文字色とバッジの背景色を指定できる(デフォルトでは文字色=白、背景色=灰色)。@property (nonatomic, retain) UIColor* textColor; @property (nonatomic, retain) UIColor* badgeColor;
アウトライン
バッジの周りに輪郭線を描くことができる。こんな感じ。アウトラインを描くには outline プロパティを YESにする。NOだと描画しない。色と線の太さを指定することができる(デフォルトは色=灰色、太さ=2.0)。
@property (nonatomic, retain) UIColor* outlineColor; @property (nonatomic, assign) CGFloat outlineWidth; @property (nonatomic, assign) BOOL outline;もちろんバッジの背景色と組み合わせることもできる。
その他
切り捨て表示
ビューのサイズに対して文字数が多い場合は切り捨て表示( ...表示)になる。※上の図の灰色の背景色は説明の都合上、意図的に付けてある。
バッジの高さ
バッジの高さは 20ピクセル固定で変更はできない。この値は定数として参照出来る他、実行時に取得できるようクラスメソッドを用意してある。#define LK_BADGE_VIEW_STANDARD_HEIGHT 20.0 : + (CGFloat)badgeHeight;LKBadgeView の高さはこの値と同じか大きくする必要がある。大きい場合の縦位置は縦中寄せとなる。通常ビュー自体の高さはこの値と同じにしておくと良い。
サンプル
付属のサンプルを実行するとカスタマイズされた表示をひと通り確認できる。
右上のスイッチをONにするとアウトライン描画に切り替わる。
ソース解説
バッジの表示は UIBezierPath を使って drawRect: で描画している。文字は UILabel を使わず直接描画した。詳細はソースコードを参照のこと。
ライセンス
MIT ライセンスです。商用・非商用を問わず自由にご利用下さい。連絡も不要です(でもくれるとうれしい)。
LLVM GCC 4.2 Error - Internal compiler error: Bus error: 10
2011年9月5日月曜日 | Published in Xcode 4 | 0 コメント
Xcode 4.1にてコンパイル時にエラーが出た(GCC 4.2)。
シミュレータでこのエラーはでなくて、実機(3GS/iOS4.3.3) で実行すべくコンパイルをかけた時にエラーが出た。 元々は(確か)4.0で開発していたプロジェクトでコンパイル前に Modernize した(Xcodeプロジェクトのマイグレーション)。
エラーは .m ファイルの最後に出ていて最初は問題箇所もわからなかった。仕方が無いのでいくつかあるメソッド内のコードをコメントアウトしてエラーが消えるかどうかを一つ一つ確認して問題箇所を特定した。
調べると stackoverflow で同様の問題がいくつか見つかった。
iphone - Xcode Bus Error When Compiling - Stack Overflow
objective c - Internal compiler error: Bus error - Stack Overflow
iphone - internal compiler error: Bus error - Stack Overflow
ios4 - Internal compiler error: Bus error with LLVM GCC 4.2 compiler - Stack Overflow
原因はよくわからないようだ。
- - - - -
今回はオチはありません(わかる人いたら是非情報をコメントへ書きこんで下さい)。
シミュレータでこのエラーはでなくて、実機(3GS/iOS4.3.3) で実行すべくコンパイルをかけた時にエラーが出た。 元々は(確か)4.0で開発していたプロジェクトでコンパイル前に Modernize した(Xcodeプロジェクトのマイグレーション)。
エラーは .m ファイルの最後に出ていて最初は問題箇所もわからなかった。仕方が無いのでいくつかあるメソッド内のコードをコメントアウトしてエラーが消えるかどうかを一つ一つ確認して問題箇所を特定した。
self.status = kMLLicenseKeyValid;status は assign プロパティで整数値を取る。 結局コードを次のように書きなおしたら治った。
[self setStatus:kMLLicenseKeyValid];もしくは
status_ = kMLLicenseKeyValid;
調べると stackoverflow で同様の問題がいくつか見つかった。
iphone - Xcode Bus Error When Compiling - Stack Overflow
objective c - Internal compiler error: Bus error - Stack Overflow
iphone - internal compiler error: Bus error - Stack Overflow
ios4 - Internal compiler error: Bus error with LLVM GCC 4.2 compiler - Stack Overflow
原因はよくわからないようだ。
- - - - -
今回はオチはありません(わかる人いたら是非情報をコメントへ書きこんで下さい)。
登録:
コメント (Atom)
人気の投稿(過去 30日間)
-
公式リファレンスの Q&A に解説がある。 Technical Q&A QA1551: Detecting the start and end edit sessions of a cell in NSTableView. 方法は Delegate と Not...
-
2011年06月09日 追記 UITableViewCell の Identifier 設定を忘れてたので追記しました。 UINib を使うと簡単に Nib で定義した UITableViewCell が使える。 今回のサンプル: [関連] Cocoaの日々: [iO...
-
Asset Catalogには画像以外のデータも置ける。サウンドファイル(.aif)を置いてみた。 取り出すには NSDataAsset を使う。 let sound = NSDataAsset(name: name) // use sound.data 取り出したサウ...
-
パスワードを暗号化して安全に iPhone/iPad へ保管したい。iOS はこの用途の為に Keychain Services を提供している。今回は Keychain Services について調べてみた。リファレンスの内容に加え、独自に調査・検証した結果をまとめてある。動作...
-
Core Data を使ったアプリケーションで下のような検索機能を実装している。 設定された値を元に NSPredicate を作成し、Core Data に対して検索をかけるのだが、こういう場合に NSCompoundPredicate が役に立つ。 NSCompound...