12

こんにちは私はラベルrectがUIViewと交差する場合にUILabelのテキストの色を変更しようとしています、私は多分私が使用できるプロパティまたは何かがあると思っていました。下の画像のように:

ここに画像の説明を入力してください

誰かが以前にこの問題に遭遇したことがありますか、またはこのことを始めるために私は何を読むべきですか?

前もって感謝します

4

4 に答える 4

10

いいパズル!これが私がすることです:

  1. 2 つの UIView。1 つをバックグラウンドと呼び、もう 1 つをプログレスバーと呼びましょう。progressBar は background の上に積み重ねられ、originそれらの commonに同じものがありsuperviewます。
  2. どちらもサブビューとしてUILabelを持ち、両方のラベルは親に対して同じ起点にあります。背景は暗くbackgroundColor、ラベルは明るくtextColor、進行状況ビューはその逆です。
  3. progressBar は背景よりフレーム幅が狭く、clipsToBounds==YES

秘訣は、ビューの原点とラベルの原点が同じで、トップ ビューに clipsToBounds があると、すべてが正しく見えるということです。

これら 2 つのビューを、ReallyCoolProgressView という名前の新しい UIView サブクラスにドロップし、1 つのパブリック メソッドを指定します。

-(void)setProgress:(float)progress progress は 0.0 から 1.0 までの数値です。このメソッドは、progressBar の幅をスケーリングし、両方のラベルのテキストを設定します@"Progress %f", progress*100

于 2013-03-21T03:43:25.887 に答える
1

テキストを使用してアルファマスクを作成するためのこのチュートリアルをご覧ください。この手法を使用すると、前景ビューと背景ビューの両方を移動する標準のプログレスバーを実装して、必要な効果を実現できます。

于 2013-03-21T03:51:28.223 に答える
1

これらの方法を確認することをお勧めします。

このメソッドを使用してNSStringのサイズをチェックすることにより、文字列のどの程度がビューとオーバーラップしているかをチェックできます。

[yourString sizeWithFont:yourFont constrainedToSize:maximumAllowedSize];

次に、NSMutableAttributedStringを使用して、ラベルの文字列の一部を1つの色に設定し、後者の部分を別の色に設定できます。

//Just an example usage 
//It sets the color of characters starting from 3 to the end to blue
[str addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(3, str.length)];


//Now you have to set your string as attributed text just like below
//UILabels now support attributed strings by default which is quite handy

[yourLabel setAttributedString:str];
于 2013-03-21T02:15:34.620 に答える