문자색을 그라데이션으로 애니메이션
10171 단어 iOSanimationObjective-C우이
소개
24 오프닝을 프로그래밍만으로 재현하고 싶어진다
Xcode를 시작해, 포치포치로 만들었습니다.
참고:
24 Opening Theme Song
우선은 디지털 문자의 배경이 애니메이션하고 있는 부분만을.
하고 있는 내용은 「애니메이션 하는 그라데이션 배경을 문자형으로 자르기」라고도 말할 수 있습니다.
애니메이션된 그라데이션 배경
- (void)insertGradientLayer:(UIView *)view
{
UIColor *beginColor = [UIColor redColor];
UIColor *endColor = [UIColor blueColor];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"colors"];
animation.duration = 2.0;
animation.repeatCount = HUGE_VALF;
animation.autoreverses = YES;
animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
animation.fromValue = @[(id)beginColor.CGColor, (id)endColor.CGColor];
animation.toValue = @[(id)endColor.CGColor, (id)beginColor.CGColor];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = @[(id)beginColor.CGColor, (id)endColor.CGColor];
[gradient addAnimation:animation forKey:@"colors"];
[view.layer insertSublayer:gradient atIndex:0];
}
문자 마스크를 만들고 겹침
UILabel을 UIImage화해, 마스크 화상으로 하고 있습니다.
문자는 검은색이고 배경은 투명한 색입니다.
UIView의 UIImage 변환은 "관련"을 참조하십시오.
유용한 정보를 공유해 주셔서 감사합니다!
UIView *gradientView = [[UIView alloc] initWithFrame:CGRectMake(0, 200, 320, 300)];
[self insertGradientLayer:gradientView];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 160)];
label.font = [UIFont fontWithName:@"DBLCDTempBlack" size:144];
label.textColor = [UIColor blackColor];
label.text = @"24";
label.textAlignment = NSTextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
[self.view addSubview:label];
UIImage *maskImage = [self imageFromView:label];
CALayer *mask = [CALayer layer];
mask.contents = (id)[maskImage CGImage];
mask.frame = CGRectMake(0, 0, maskImage.size.width, maskImage.size.height);
gradientView.layer.mask = label.layer;
[self.view addSubview:gradientView];
결론
이 프로그램은 언제 완성될 것인가!
한가로운 느낌으로 기다려주십시오.
덧붙여서 24에서는 시즌 2를 제일 좋아합니다.
참고
UIView를 UIImage로 변환
Reference
이 문제에 관하여(문자색을 그라데이션으로 애니메이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/satoshi0212/items/21c4073b994d38cb0765
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- (void)insertGradientLayer:(UIView *)view
{
UIColor *beginColor = [UIColor redColor];
UIColor *endColor = [UIColor blueColor];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"colors"];
animation.duration = 2.0;
animation.repeatCount = HUGE_VALF;
animation.autoreverses = YES;
animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
animation.fromValue = @[(id)beginColor.CGColor, (id)endColor.CGColor];
animation.toValue = @[(id)endColor.CGColor, (id)beginColor.CGColor];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = @[(id)beginColor.CGColor, (id)endColor.CGColor];
[gradient addAnimation:animation forKey:@"colors"];
[view.layer insertSublayer:gradient atIndex:0];
}
문자 마스크를 만들고 겹침
UILabel을 UIImage화해, 마스크 화상으로 하고 있습니다.
문자는 검은색이고 배경은 투명한 색입니다.
UIView의 UIImage 변환은 "관련"을 참조하십시오.
유용한 정보를 공유해 주셔서 감사합니다!
UIView *gradientView = [[UIView alloc] initWithFrame:CGRectMake(0, 200, 320, 300)];
[self insertGradientLayer:gradientView];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 160)];
label.font = [UIFont fontWithName:@"DBLCDTempBlack" size:144];
label.textColor = [UIColor blackColor];
label.text = @"24";
label.textAlignment = NSTextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
[self.view addSubview:label];
UIImage *maskImage = [self imageFromView:label];
CALayer *mask = [CALayer layer];
mask.contents = (id)[maskImage CGImage];
mask.frame = CGRectMake(0, 0, maskImage.size.width, maskImage.size.height);
gradientView.layer.mask = label.layer;
[self.view addSubview:gradientView];
결론
이 프로그램은 언제 완성될 것인가!
한가로운 느낌으로 기다려주십시오.
덧붙여서 24에서는 시즌 2를 제일 좋아합니다.
참고
UIView를 UIImage로 변환
Reference
이 문제에 관하여(문자색을 그라데이션으로 애니메이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/satoshi0212/items/21c4073b994d38cb0765
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
UIView *gradientView = [[UIView alloc] initWithFrame:CGRectMake(0, 200, 320, 300)];
[self insertGradientLayer:gradientView];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 160)];
label.font = [UIFont fontWithName:@"DBLCDTempBlack" size:144];
label.textColor = [UIColor blackColor];
label.text = @"24";
label.textAlignment = NSTextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
[self.view addSubview:label];
UIImage *maskImage = [self imageFromView:label];
CALayer *mask = [CALayer layer];
mask.contents = (id)[maskImage CGImage];
mask.frame = CGRectMake(0, 0, maskImage.size.width, maskImage.size.height);
gradientView.layer.mask = label.layer;
[self.view addSubview:gradientView];
이 프로그램은 언제 완성될 것인가!
한가로운 느낌으로 기다려주십시오.
덧붙여서 24에서는 시즌 2를 제일 좋아합니다.
참고
UIView를 UIImage로 변환
Reference
이 문제에 관하여(문자색을 그라데이션으로 애니메이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/satoshi0212/items/21c4073b994d38cb0765
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(문자색을 그라데이션으로 애니메이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satoshi0212/items/21c4073b994d38cb0765텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)