Wonderful-色に関するライブラリ
8762 ワード
⭐️⭐️⭐️
以下の内容は公式ソースコード、READMEドキュメント、テストDemoまたは個人使用総括に由来します.
Wonderful
image
ChangeLog 1.2.1
1.2.1バージョンが修正されました.
marqueeまたはheadlineコンポーネントのページがあり、バックグラウンドがフロントに戻って混乱する問題があります.
marqueeまたはheadlineコンポーネントのページがあり、現在のページにとどまり、ロック画面がロック解除され、偶発的にエラーが発生する問題があります.
marqueeが実行中にテキストを変更できるようにする
Demoプログラムのスクリーンショット
iPhone 6でDemoプログラムを実行することをお勧めします
Drawing
一、UIcolor+Wonderful
1.この分類にはより多くの色が拡張されており、後で小さなDemoを書くのにredColor buleColorはもう必要ありません.self.view.backgroundColor = [UIColor khakiColor];
self.view.backgroundColor = [UIColor chocolateColor];
2.色系ごとに平均10色あるので、名前で直接叩くだけでなく、色の階段のマクロで叩くこともでき、言葉が思い出せないときに便利です.マクロは1~10色から濃くなり、自分の感覚で浅いマクロや深いマクロを使うことができます.self.view.backgroundColor = Wonderful_YelloeColor4;
self.view.backgroundColor = Wonderful_BrownColor4;
Drawing
Drawing
二、UIcolor+Separate
1.任意の色のrgbがalphaを飲む値を取り出すことができる色分離スキームを提供する.UIColor *testC = [UIColor salmonColor];
float r= [testC red];
float g= [testC green];
float b= [testC blue];
float alpha= [testC alpha];
NSLog(@"****** %f,%f,%f,%f",r,g,b,alpha);
2.背景がユーザによってどんな色に設定されていても、文字の色が背景の反転であるように、この色の反転を1色で算出することができる.self.showLbl1.backgroundColor = [UIColor peachRed];
self.showLbl1.textColor = [[UIColor peachRed]reverseColor];
3.この色の各詳細値を直接印刷することもできます.[[UIColor salmonColor]printDetail];
//
This Color's Red:250, Green:128, Blue:114, Alpha:1
decimal red:0.9804 green:0.5020 blue:0.4471
Hexadecimal 0xfa8072
4.カラー微調整方式が提供され、既知のカラーのrgbのある値をいくつか上昇または下降させることができ、背景がどんな色であっても、フレームが背景よりも深い20に使用することができる.承認色の詳細値を印刷することもできます.UIColor *navColor = [[UIColor redColor]up:SXColorTypeBlue num:30]; // 30
UIColor *barColor = [[UIColor blueColor]up:1 num:140]; // tag
UIColor *bgColor = [[UIColor blackColor]down:SXColorTypeAlpha num:10]; //
UIColor *lineColor = [bgColor up:3 num:20]; // 20.
image
三、SXColorGradientView
1.グラデーションのviewで、透明な遷移に任意の色を設定できます.SXColorGradientView *grv1 = [SXColorGradientView createWithColor:[UIColor paleGreen] frame:CGRectMake(10, 10, 80, 30) visible:YES direction:SXColorGradientToRight];
2.2つの色が互いに移行するように設定することもできます.SXColorGradientView *grv3 = [SXColorGradientView createWithFromColor:[UIColor peruColor] toColor:[UIColor ghostWhite] frame:CGRectMake(10, 50, 80, 30) direction:SXColorGradientToRight];
3.上下左右に4つの移行方向を設定できます.typedef NS_ENUM(NSInteger, SXColorGradientDirection) {
SXColorGradientToTop = 1,
SXColorGradientToLeft = 2,
SXColorGradientToBottom = 3,
SXColorGradientToRight = 4,
};
4.入力配列を増やし、複数の色遷移のviewを作成することをサポートします.
Drawing
四、SXMARquee
1.任意のスタイルのランニングランプを実現します.走馬灯の方法:- (instancetype)initWithFrame:(CGRect)frame
speed:(SXMarqueeSpeedLevel)speed
Msg:(NSString *)msg
bgColor:(UIColor *)bgColor
txtColor:(UIColor *)txtColor;
// ,
- (void)changeTapMarqueeAction:(void(^)())action;
//
- (void)changeMarqueeLabelFont:(UIFont *)font;
- (void)start;
- (void)stop;
- (void)restart;
Demo: SXMarquee *mar = [[SXMarquee alloc] initWithFrame:CGRectMake(20, 255, 335, 35)
speed:4
Msg:@" , , "
bgColor:[UIColor salmonColor]
txtColor:[UIColor whiteColor]];
// :[UIFont fontWithName:@"HelveticaNeue" size:14.0f]
[mar changeMarqueeLabelFont:[UIFont systemFontOfSize:26]];
// , :
[mar changeTapMarqueeAction:^{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@" " message:@" , " delegate:self cancelButtonTitle:@" " otherButtonTitles:@" ", nil];
[alert show];
}];
[mar start];
2.ランニングライトの背景は任意の色を設定できます.これは色遷移viewに基づいて作られています.
3.ランニングランプはクリックドラッグを実現したり、より多くのクリックイベントをバインドしたりすることができます.
ソース解析/*
// Label
UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:14.0f];
CGSize msgSize = [_marqueeLbl.text sizeWithAttributes:@{NSFontAttributeName:fnt}];
*/
#pragma mark -
- (void)moveAction {
// Label
//
CGPoint fromPoint = CGPointMake(self.frame.size.width + self.marqueeLbl.frame.size.width/2, self.frame.size.height/2);
//
CGPoint toPoint = CGPointMake(-self.marqueeLbl.frame.size.width/2, self.frame.size.height/2);
self.marqueeLbl.center = fromPoint;
UIBezierPath *movePath = [UIBezierPath bezierPath];
[movePath moveToPoint:fromPoint];
[movePath addLineToPoint:toPoint];
//
CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
//
moveAnim.path = movePath.CGPath;
//
moveAnim.removedOnCompletion = YES;
//
moveAnim.duration = self.marqueeLbl.frame.size.width * self.speedLevel * 0.01;
// ,
moveAnim.delegate = self;
//
[self.marqueeLbl.layer addAnimation:moveAnim forKey:nil];
}
#pragma mark - CAAnimationDelegate
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
if (flag) {
[self moveAction];
}
}
SXHeadLine
方法:- (void)setBgColor:(UIColor *)bgColor
textColor:(UIColor *)textColor
textFont:(UIFont *)textFont;
//
- (void)setScrollDuration:(NSTimeInterval)scrollDuration
stayDuration:(NSTimeInterval)stayDuration;
// ,
- (void)changeTapMarqueeAction:(actionBlock)action;
- (void)start;
- (void)stop;
Demo: SXHeadLine *headLine3 = [[SXHeadLine alloc]initWithFrame:CGRectMake(100, 530, 250, 30)];
headLine3.messageArray = @[@"1、 43 , ",@"2、 , ",@"3、 , 5 ",@"4、 , ", @"5、 , "];
[headLine3 setBgColor:[UIColor whiteColor] textColor:[UIColor orangeRed] textFont:[UIFont systemFontOfSize:13]];
[headLine3 setScrollDuration:0.5 stayDuration:3];
headLine3.hasGradient = YES;
[headLine3 changeTapMarqueeAction:^(NSInteger index) {
NSLog(@" %ld button! :%@", index, headLine3.messageArray[index]);
}];
[headLine3 start];
image
五、SXColorLabel
1.textの重要な内容を特殊記号で包むと、特殊に表示されます
2.<>で包むとハイライトカラーが表示されます.[]で包むと、ハイライトされたフォントが表示されます.lbl.text = @" 1: 。";
lbl2.text = @" 2: [ ] , [ ]!";
3.このハイライトカラーとハイライトフォントは自分で設定できます.//
[SXColorLabel setAnotherColor:[UIColor salmonColor]];
//
[SXColorLabel setAnotherFont:[UIFont boldSystemFontOfSize:18]];
4.両者を混合して使用することもできる.ハイライトされたフォントにはハイライトされた色があります.lbl3.text = @" 3: :[ ]";
完全な方法:SXColorLabel *sxlbl3 = [[SXColorLabel alloc]initWithFrame:CGRectMake(40, 200, 350, 30)];
sxlbl3.anotherColor = [UIColor salmonColor];
sxlbl3.anotherFont = [UIFont systemFontOfSize:14];
sxlbl3.text = @" :[ ]";
[self.bodyView addSubview:sxlbl3];
Drawing
ソース解析
同じLabelで異なるフォント色を設定する方法は、ソースコードにタグ記号<>、[]を文字列に配置し、これらのタグ記号を削除しながら範囲、長さを記録して異なるフォントと色を設定することを参照してください.- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] initWithFrame:CGRectMake((MaxX(self.imageView)+10), MinY(self.imageView), 245, 40)];
_titleLabel.numberOfLines = 2;
_titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
_titleLabel.font = [UIFont systemFontOfSize:16];
NSString *strPrice = [NSString stringWithFormat:@"%d - %d ", (int)self.data.minPrice, (int)self.data.maxPrice];
NSString *strTitle = self.data.title;
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@ %@", strTitle, strPrice]];
[string setAttributes:@{NSForegroundColorAttributeName: COLOR_RGB(34, 34, 39)} range:NSMakeRange(0, strTitle.length)];
[string setAttributes:@{NSForegroundColorAttributeName: COLOR_RGB(255, 77, 100)} range:NSMakeRange((strTitle.length+1), strPrice.length)];
_titleLabel.attributedText = string;
}
return _titleLabel;
}
旧版demoカラーリスト
image
self.view.backgroundColor = [UIColor khakiColor];
self.view.backgroundColor = [UIColor chocolateColor];
self.view.backgroundColor = Wonderful_YelloeColor4;
self.view.backgroundColor = Wonderful_BrownColor4;
UIColor *testC = [UIColor salmonColor];
float r= [testC red];
float g= [testC green];
float b= [testC blue];
float alpha= [testC alpha];
NSLog(@"****** %f,%f,%f,%f",r,g,b,alpha);
self.showLbl1.backgroundColor = [UIColor peachRed];
self.showLbl1.textColor = [[UIColor peachRed]reverseColor];
[[UIColor salmonColor]printDetail];
//
This Color's Red:250, Green:128, Blue:114, Alpha:1
decimal red:0.9804 green:0.5020 blue:0.4471
Hexadecimal 0xfa8072
UIColor *navColor = [[UIColor redColor]up:SXColorTypeBlue num:30]; // 30
UIColor *barColor = [[UIColor blueColor]up:1 num:140]; // tag
UIColor *bgColor = [[UIColor blackColor]down:SXColorTypeAlpha num:10]; //
UIColor *lineColor = [bgColor up:3 num:20]; // 20.
SXColorGradientView *grv1 = [SXColorGradientView createWithColor:[UIColor paleGreen] frame:CGRectMake(10, 10, 80, 30) visible:YES direction:SXColorGradientToRight];
SXColorGradientView *grv3 = [SXColorGradientView createWithFromColor:[UIColor peruColor] toColor:[UIColor ghostWhite] frame:CGRectMake(10, 50, 80, 30) direction:SXColorGradientToRight];
typedef NS_ENUM(NSInteger, SXColorGradientDirection) {
SXColorGradientToTop = 1,
SXColorGradientToLeft = 2,
SXColorGradientToBottom = 3,
SXColorGradientToRight = 4,
};
- (instancetype)initWithFrame:(CGRect)frame
speed:(SXMarqueeSpeedLevel)speed
Msg:(NSString *)msg
bgColor:(UIColor *)bgColor
txtColor:(UIColor *)txtColor;
// ,
- (void)changeTapMarqueeAction:(void(^)())action;
//
- (void)changeMarqueeLabelFont:(UIFont *)font;
- (void)start;
- (void)stop;
- (void)restart;
SXMarquee *mar = [[SXMarquee alloc] initWithFrame:CGRectMake(20, 255, 335, 35)
speed:4
Msg:@" , , "
bgColor:[UIColor salmonColor]
txtColor:[UIColor whiteColor]];
// :[UIFont fontWithName:@"HelveticaNeue" size:14.0f]
[mar changeMarqueeLabelFont:[UIFont systemFontOfSize:26]];
// , :
[mar changeTapMarqueeAction:^{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@" " message:@" , " delegate:self cancelButtonTitle:@" " otherButtonTitles:@" ", nil];
[alert show];
}];
[mar start];
/*
// Label
UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:14.0f];
CGSize msgSize = [_marqueeLbl.text sizeWithAttributes:@{NSFontAttributeName:fnt}];
*/
#pragma mark -
- (void)moveAction {
// Label
//
CGPoint fromPoint = CGPointMake(self.frame.size.width + self.marqueeLbl.frame.size.width/2, self.frame.size.height/2);
//
CGPoint toPoint = CGPointMake(-self.marqueeLbl.frame.size.width/2, self.frame.size.height/2);
self.marqueeLbl.center = fromPoint;
UIBezierPath *movePath = [UIBezierPath bezierPath];
[movePath moveToPoint:fromPoint];
[movePath addLineToPoint:toPoint];
//
CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
//
moveAnim.path = movePath.CGPath;
//
moveAnim.removedOnCompletion = YES;
//
moveAnim.duration = self.marqueeLbl.frame.size.width * self.speedLevel * 0.01;
// ,
moveAnim.delegate = self;
//
[self.marqueeLbl.layer addAnimation:moveAnim forKey:nil];
}
#pragma mark - CAAnimationDelegate
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
if (flag) {
[self moveAction];
}
}
- (void)setBgColor:(UIColor *)bgColor
textColor:(UIColor *)textColor
textFont:(UIFont *)textFont;
//
- (void)setScrollDuration:(NSTimeInterval)scrollDuration
stayDuration:(NSTimeInterval)stayDuration;
// ,
- (void)changeTapMarqueeAction:(actionBlock)action;
- (void)start;
- (void)stop;
SXHeadLine *headLine3 = [[SXHeadLine alloc]initWithFrame:CGRectMake(100, 530, 250, 30)];
headLine3.messageArray = @[@"1、 43 , ",@"2、 , ",@"3、 , 5 ",@"4、 , ", @"5、 , "];
[headLine3 setBgColor:[UIColor whiteColor] textColor:[UIColor orangeRed] textFont:[UIFont systemFontOfSize:13]];
[headLine3 setScrollDuration:0.5 stayDuration:3];
headLine3.hasGradient = YES;
[headLine3 changeTapMarqueeAction:^(NSInteger index) {
NSLog(@" %ld button! :%@", index, headLine3.messageArray[index]);
}];
[headLine3 start];
lbl.text = @" 1: 。";
lbl2.text = @" 2: [ ] , [ ]!";
//
[SXColorLabel setAnotherColor:[UIColor salmonColor]];
//
[SXColorLabel setAnotherFont:[UIFont boldSystemFontOfSize:18]];
lbl3.text = @" 3: :[ ]";
SXColorLabel *sxlbl3 = [[SXColorLabel alloc]initWithFrame:CGRectMake(40, 200, 350, 30)];
sxlbl3.anotherColor = [UIColor salmonColor];
sxlbl3.anotherFont = [UIFont systemFontOfSize:14];
sxlbl3.text = @" :[ ]";
[self.bodyView addSubview:sxlbl3];
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] initWithFrame:CGRectMake((MaxX(self.imageView)+10), MinY(self.imageView), 245, 40)];
_titleLabel.numberOfLines = 2;
_titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
_titleLabel.font = [UIFont systemFontOfSize:16];
NSString *strPrice = [NSString stringWithFormat:@"%d - %d ", (int)self.data.minPrice, (int)self.data.maxPrice];
NSString *strTitle = self.data.title;
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@ %@", strTitle, strPrice]];
[string setAttributes:@{NSForegroundColorAttributeName: COLOR_RGB(34, 34, 39)} range:NSMakeRange(0, strTitle.length)];
[string setAttributes:@{NSForegroundColorAttributeName: COLOR_RGB(255, 77, 100)} range:NSMakeRange((strTitle.length+1), strPrice.length)];
_titleLabel.attributedText = string;
}
return _titleLabel;
}