2009-07-13 30 views
3

私はUIViewの上にラベルを貼っています。タイマーの助けを借りて配列を使ってメッセージを表示していますが、今このメッセージをMARQUEEスタイルで表示します。私はどのような方法でも始めることができません。すべてのソースコード、使用するメソッド、アニメーションスタイル、その他のアプローチ。事前ラベルにマーキーを追加するには

+1

ではありませんがMARQUEEは廃止されましたか?あなたはそれを使用すべきではありません。私はあなたがjavascriptで同じ効果を得ることができると信じています。 –

+2

@MercerTraieste 私はこの質問がHTMLタグ 'marquee'について質問しているとは思わない。それは、iPhone SDKのUILabelクラスを使用してマーキータグと同じ種類のスタイルを達成することです。 – Jasarien

+0

[この質問](http://stackoverflow.com/questions/430942/resizable-uilabel-which-scrolls-across-the-screen)はあなたが求めているものに非常に近いです。 –

答えて

9

で おかげでここに考えです:あなたのUILabelはに座っていることのUIView上の真に

  • セットclipsToBounds
  • そして、それを使用する方法については、ドキュメント内UIViewAnimationsブロック(外観を開始、その非常に単純な)
    • 囲むUIViewの
    • の境界の外に前のラベルの位置を設定した位置に設定されたフレームに新しいラベルを作成します。囲むUIViewの範囲外の左にどこにでも移動します。
    • 前のラベルの位置に次のラベルの位置を設定します。
  • は、画面と画面上を移動する新しいラベルをオフに移動するあなたに1つのラベルのスライドアニメーションを与える必要がありますアニメーション

をコミットします。

animationDurationプロパティとラベルとビューの正確な配置とサイズ設定プロパティを使って再生する必要がありますが、それはちょうどよいでしょう。

4

私はそれに従いました:

*私はコンテナビューを作成しました。

messageView = [[UIView alloc] initWithFrame:CGRectMake(27, 0, 235, 19)]; 
[messageView setClipsToBounds:YES];//With This you prevent the animation to be drawn outside the bounds. 

*は、それから私は、表示されるテキストでUILabelを作成し、最後に、私はこのような関数を作成

lblTime = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 235, 19)]; 
[lblTime setBackgroundColor:[UIColor clearColor]]; 
[messageView addSubview:lblTime]; 

*私のコンテナビューに追加:

- (void)sendNotification:(NSString*)txt{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:3.5]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:messageView cache:YES]; 
    [lblTime setText:txt]; 
    [lblTime setTextAlignment:UITextAlignmentLeft]; 
    lblTime.frame = CGRectMake(260, 0, 258, 19); 
    [UIView commitAnimations]; 
}