1行に表示する必要のある長いテキストがあります。テキストが長すぎてUITextFieldオブジェクトに収まりません。テキスト(またはuitextfieldオブジェクト自体)を右から左にアニメーション化する方法を探しています。一部のiPhoneアプリでそれを見たことがありますが、その方法がわかりません。
テキストが大きく収まる場合は、ユーザーが読めるようにゆっくりと左にスクロールします。
これをどのように達成できるか考えていますか?
ありがとうございました!
1行に表示する必要のある長いテキストがあります。テキストが長すぎてUITextFieldオブジェクトに収まりません。テキスト(またはuitextfieldオブジェクト自体)を右から左にアニメーション化する方法を探しています。一部のiPhoneアプリでそれを見たことがありますが、その方法がわかりません。
テキストが大きく収まる場合は、ユーザーが読めるようにゆっくりと左にスクロールします。
これをどのように達成できるか考えていますか?
ありがとうございました!
Brian Stormont のAutoScrollLabelのようなソリューションを使用して、ここでさらに議論することができます。
それを含めた後、おおよそ次のことを行う必要があります。
AutoScrollLabel *marquee = [[AutoScrollLabel alloc] initWithFrame:marqueeFrame];
[view addSubview:marquee];
[marquee setScrollSpeed:16.8];
marquee.text = @"My long text";
[marquee readjustLabels];
[marquee scroll]; //This line is the one that actually starts the scrolling
かなり古いですが、今は配送アプリで使っています。
接線方向に関連していますが、必須ではありませんが、このアニメーション テキスト クラスAUIAnimatedTextは、サイズや色などのテキストの他のプロパティをアニメーション化できるようにします。
これを処理するドロップインの代替品がUILabel
あります。
https://github.com/cbpowell/MarqueeLabel
概要: MarqueeLabel は UILabel サブクラスであり、ラベルのテキストが使用可能な幅を超えたときにスクロール マーキー効果を追加します。ラベルのスクロール方向と速度/レートも指定できます。すべての標準 UILabel プロパティ (意味がある場合) は MarqueeLabel で使用でき、UILabel と同じように動作します。
私は MarqueeLabel の作成者でも、作成者とは何の関係もありません。
解決策が 1 つありますが、実際には私のお気に入りではありません。viewController にAutoScrollLabel *marqueeLabelがある場合は、viewController の viewWillAppear メソッドでそのテキストを次のように設定します。
marqueeLabel.text = marqueeLabel.text;
私はこれ以外のものを見つけていません。また、その問題が発生している場合は、iPhone/iPod でマルチタスクを使用してみてください。アプリケーションを再度開いたときに、marqueeLabel のアニメーションが見つかりません。そのために、AutoScrollLabel クラスの commonInit にステートメントを追加します。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(readjustLabels) name:UIApplicationWillEnterForegroundNotification object:nil];
また、そのクラスの dealloc にもう 1 つのステートメントを追加します
[[NSNotificationCenter defaultCenter] removeObserver:self];
私はこのようなことはしていませんが、 textRectForBounds:メソッド ( UITextField documentation ) をオーバーライドし、 NSTimerを使用して、このオーバーライドを行うことができると思います。タイマーでは、テキスト フィールドのsetNeedsDisplayメソッドを呼び出すだけです。