次のように図本当の効果が期待されます。
上記のように、移動時間に基づいて、テキストの色は、文字通り緑なります。
方法:
(1)メソッドを呼び出します。
これを達成するために、ボイドUIRectFillUsingBlendMode(CGRect RECT、CGBlendModeするBlendMode)メソッドで
(2)実装ロジック。
カスタムラベル、のdrawRect通じラベル:通話のUIRectFillUsingBlendModeを使用して、ラベルのグラフィックスコンテキストを取得する方法:演色ラベルを達成するために、混合フィラーの方法
(3)コードの実装:
カスタムラベルを作成します:
.Hとの.mファイルを次のように:
----------------。H --------------------
の#import <UIKitの/ UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface YALabel:UILabel
@property(割り当て、非アトミック)CGFloat進捗。
@end
----------------。メートル--------------------
ます。#import "YALabel.h"
@implementation YALabel
- (ボイド)のdrawRect:(CGRect)RECT {[スーパーのdrawRect:RECT]。[UIColor greenColor]設定]; //填充 //这个RECT的X、Y、幅、高可根据自己的需求设置RECT = CGRectMake(rect.size.width * self.progress - 20、rect.origin.y、40 、rect.size.height ); UIRectFillUsingBlendMode(RECT、kCGBlendModeSourceIn)。} - (ボイド)でsetProgress(CGFloat)進行{_progress = 進捗。[自己setNeedsDisplay]。}
コール:
#importを"ViewController.h" の#import "YALabel.h" @interface ViewControllerを() @property(アトミック、強い)YALabel * yaLabl。 @property(割り当て、非アトミック)CGFloat進捗。 @end @implementationのViewController - (ボイド)のviewDidLoad { [スーパーのviewDidLoad]。 self.yaLabl = [[YALabel ALLOC] initWithFrame:CGRectMake(10、100、self.view.frame.size.width - 20、30)]。 self.yaLabl.text = @ "叶绿不同赏、叶黄不同悲;若问相思处、叶绿叶黄时~~~~~~~"。 self.yaLabl.textColor = [UIColor blackColor]。 self.yaLabl.font = [UIFont systemFontOfSize:18]。 [self.viewのaddSubview:self.yaLabl]。 [NSTimer scheduledTimerWithTimeInterval:0.1ターゲット:自己セレクタ:@selector(更新)ユーザー情報:リピートゼロ:YES]。 self.progress = 0.0。 } - (ボイド)更新{ IF(self.progress> = 1.0){ self.progress = 0.0。 } self.progress + = 0.01。 self.yaLabl.progress = self.progress。 }
(4)注:
ラベルは、背景色を設定しますが、背景色を設定した場合、その後の道を描くことができない、塗装色のテキストラベルに代わりに描かれているラベルの背景色があります。
私はラベルの背景色を追加した後の図は、効果です。
(5)CGBlandMode引数は、見てみることが興味を持っている列挙型であり、参照リンクを提供し、それぞれの列挙値のために計算されます。
https://www.jianshu.com/p/96cfd3697b21