頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


リンク表示するUILabelみたいなクラスを作ってみた

次のバージョンの「赤ちゃんの成長グラフ」で使うのに"LinkedLabel"クラスを作りました。
このクラスは次のような青い文字とアンダーラインを表示するタップできるラベルみたいなものです。

LinkedLabelクラスを使ったビュー

同じことはUITextViewクラスでも可能ですが、その場合だとメールアドレスをタップするとメーラーが起動しますし、通常のリンクだとSafariが起動します。
それでいい場合ならUITextViewでもいいのでしょうけど、自分で次のアクションを指定したかったので自作した次第です。
つまり、メールアドレスをタップしたらメーラーが起動するのではなく、MFMailComposeViewControllerクラスを使ってアプリ内でメール送信を完結したかったのです。

このクラスを使ったサンプルをGitHubにアップロードしました。
SampleLinkedLabel - GitHub

このクラスはUILabelのサブクラスなので同じように書いてviewに乗せます :
LinkedLabel *label1 = [[LinkedLabel alloc] initWithOrigin:CGPointMake(10, 10) text:@"hoge@apple.com" font:[UIFont systemFontOfSize:14.f]];
[self.view addSubview:label1];
タップされた場合はデリゲートメソッドで拾うようになっております。
このメソッド内で自分のやりたい処理を記述するようになっています。

なお、このクラスを使ったバージョンはまだ未申請で審査に通るかどうかはまだ不明です(リジェクトされたら追記します)。


Compile for ThumbをNOにしたら速くなる?

どこかでCompile for Thumbの設定を変えると速くなるかもってのを目にしたので試してみました。

Xcode4でCompile for Thumbを設定

この値、デフォルトではYESになってまして、NOにすると早くなるかもしれないけど、ファイルサイズが大きくなるんだとか。
「赤ちゃんの成長グラフ」アプリでテストしてみたのですが、確かに200KBほど大きくなってました。
それに見合うほど処理速度が向上するのか、、、?

とりあえず、一番気になっている起動時の時間を測定してみました。
なにかとごにょごにょと計算しているので、すこしでも短くなればと期待。

実機iPhone 3GS(iOS 4.3.5)を使用。
起動時の初期化部分の処理にかかる時間を各5回ずつ測定。

結果はこんな感じでした。単位はmsecです。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
YES : 1008 , 622 , 622 , 604 , 617
NO : 612 , 604 , 606 , 605 , 604
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

うん、、、変わらないな!

ちなみにiPod touch 4G(iOS 5 beta 7)でもやってみましたが、同様の結果でした。
当アプリ程度ではCompile for ThumbをNOにしても効果はなさそう。
ってことで、次期バージョンではYESのまま、変更なしに決定。




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.