Facebook Twitter Google Maps RSS
Home iPhoneアプリ 【WatchKit】AppleWatchに長文のメッセージを表示する
formats

【WatchKit】AppleWatchに長文のメッセージを表示する

こんにちは。陽気なシステムやナメックです。

AppleWatchの発売が目前の迫りつつある今日この頃、私もぼちぼちXcodeのベータ版を動かしてAppleWatch対応アプリの開発しています。

AppleWatchはAppleが出す新デバイスとして、ウェアラブル端末として色々注目が集まっています。

しかし、開発者視点から見て、このAppleWatchの最大の課題の一つといえば・・・

画面が小さい!

ということではないでしょうか。

AppleWatchはすでに2サイズ発売されていることは発表されていますが、大きい方で42mm小さい方は38mmしかありません。

例えばこのブログのタイトルである

「陽気なシステム屋が世界を変える」

という文字を画面に表示したとしましょう。

途中で文字が切れてしまっています。

もし、全文表示するようMinScaleを変更した場合にはこうなります。

今度は文字が小さくて読みづらいです。

今はまだシミュレータで開発している段階なので、文字が小さくてもなんとなく読めてしまうのですが、こいつが実機の38mmディスプレイに表示された場合、見辛いこと間違いなしです。

こいつは問題です。

ということで、文字は大きく見やすく、なおかつ長文を違和感なく表示させる方法を考えてみましょう。
えーっと・・・。
ーっと・・・。
っと・・・。
と・・・。
・・・。
はい。

いやいや、なにも思いつかなかったわけではないです。

これが答えです。

つまり長すぎる文字は新幹線の車内ニュースのように、一文字一文字ずらしながらスクロールしてやればいいのです。

これなら文字サイズを標準に保ったまま、全文を表示させることができます。

というわけでいきなりコード、全文です。

@implementation WKInterfaceLabel (Scroll)

- (void)scrollText:(NSString*)text interval:(NSTimeInterval)interval completion:(void (^)(void))completion
{
// 文字列をセット
[self setText:text];

// intervalで指定した時間後に実行
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(interval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 先頭の文字列を削除
NSString *nextText;
nextText =

;

if (nextText.length > 0) {
// まだ表示する文字列がある場合、再度同じメソッドを呼ぶ
[self scrollText:nextText interval:interval completion:completion];
}
else {
// 最後まで表示した場合
[self setText:@""];

// 完了通知
if (completion) {
completion();
}
}
});
}

@end

うん、短い。

でもってサンプルのスクリーンショット。

今回はWKInterfaceLabelのカテゴリとして実装しています。

まず長文をラベルにそのままはっつけて、その後は一定間隔ごとに先頭の文字を一文字削って再表示をするというやり方です。

これでアニメーションが貧弱貧弱ぅなWatchKitでも文字列がアニメーションして表示しているように見えますね。見えますよね。

簡単!

開発者としても利用者としても、AppleWatchはぜひぜひ盛り上がって欲しいと思っています。

その為にはAppleWatchスゲー感を演出するために、便利な対応アプリを増やしていくことが必要不可欠ですね。

iPhoneアプリ開発実績はこちら

http://www.system-i-enter.com/result/index-iPhone_iPad.php

以上!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">