iOS 는 텍스트 를 컬러 텍스트 그림 으로 변환 합 니 다.

6485 단어 iOS문자.그림.
본 고 는 문 자 를 다채로운 그림 으로 바 꾸 는 기능 을 쓰 고 문 자 를 입력 하여 문 자 를 컬러 로 바 꾸 는 문자 그림 을 입력 하면 서로 다른 글씨체,그 라 데 이 션 을 선택 하여 먼저 효 과 를 볼 수 있다.

주로 CAGradientLayer 로 그 라 데 이 션 을 실현 합 니 다.먼저 상부 전시 실현 코드 를 보십시오.

-(void)setupContentView
{
 UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 44, ScreenWidth, ScreenHight - 44 -300)];
 [self.view addSubview:contentView];
 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureAction:)];
 [contentView addGestureRecognizer:tapGesture];
 self.topContentView = contentView;
 self.topContentView.backgroundColor = [UIColor clearColor];

 UILabel *label = [[UILabel alloc] init];
 label.numberOfLines = 0;
 label.text = @"ABC";
 label.frame = [self calculateContextLabelFrameWithTitle:@"ABC"];
 label.center = CGPointMake(contentView.bounds.size.width / 2, contentView.bounds.size.height / 2);
 label.font = [UIFont fontWithName:self.fontNameArray[0] size:25];
 label.textAlignment = NSTextAlignmentCenter;
 [contentView addSubview:label];
 label.backgroundColor = [UIColor clearColor];
 self.contentLabel = label;

 self.gradientLayer = [CAGradientLayer layer];
 self.gradientLayer.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, label.frame.size.height);
 self.gradientLayer.backgroundColor = [UIColor clearColor].CGColor;
 self.gradientLayer.startPoint = CGPointMake(0,0.5);
 self.gradientLayer.endPoint = CGPointMake(1,0.5);
 self.gradientLayer.colors = self.grandentArr[0];
 [contentView.layer addSublayer:self.gradientLayer];
 self.gradientLayer.mask = self.contentLabel.layer;
 self.contentLabel.frame = self.gradientLayer.bounds;
}
입력 한 텍스트 가 바 뀌 었 을 때 self.gradientLayer 의 frame 를 다시 계산 합 니 다.

-(void)textFieldTextChange:(NSNotification*)notice
{
 self.contentLabel.text = self.textField.text;
 [self reCalculateGradientLayerFrame];
}
다음 부분의 구현 코드:

-(void)setupBottomView
{
 UIView *bottomView =[[UIView alloc] initWithFrame:CGRectMake(0, ScreenHight - 300, ScreenWidth, 300)];
 bottomView.backgroundColor = JGCOLOR(222, 222, 222);
 [self.view addSubview:bottomView];
 self.bottomContentView = bottomView;

 UIView *textContentView = [[UIView alloc] init];
 textContentView.frame = CGRectMake(0, 0, bottomView.bounds.size.width, 50);
 [bottomView addSubview:textContentView];
 textContentView.backgroundColor = JGCOLOR(55, 44, 16);

 UITextField *textField = [[UITextField alloc] init];
 textField.borderStyle = UITextBorderStyleRoundedRect;
 textField.frame = CGRectMake(10, 5, textContentView.bounds.size.width - 20, textContentView.bounds.size.height - 10);
 [textContentView addSubview:textField];
 self.textField = textField;

 CGFloat orgY = 60;
 CGFloat orgx = 10;
 CGFloat space = 10;
 CGFloat width = (ScreenWidth - orgx * 2 - 3 * space) / 4;
 CGFloat height = 35;

 for (int i = 0; i < 16; i++) {
 UIView *vw = [[UIView alloc] initWithFrame:CGRectMake(orgx + (i % 4) * width + (i % 4) * space, orgY + (i / 4) * height + (i / 4) * space, width, height)];
 vw.backgroundColor = [UIColor clearColor];
 vw.tag = i + 1;
 [self.bottomContentView addSubview:vw];

 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTap:)];
 [vw addGestureRecognizer:tapGesture];

 UILabel *label = [[UILabel alloc] initWithFrame:vw.bounds
    ];
 label.textAlignment = NSTextAlignmentCenter;
 label.text = @"ABC";
 label.frame = vw.bounds;
 label.font = [UIFont fontWithName:self.fontNameArray[i % 4] size:25];
 label.backgroundColor = [UIColor clearColor];
 [vw addSubview:label];

 CAGradientLayer *grandient = [CAGradientLayer layer];
 grandient.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, label.frame.size.height);
 grandient.backgroundColor = [UIColor clearColor].CGColor;
 grandient.startPoint = CGPointMake(0,0.5);
 grandient.endPoint = CGPointMake(1,0.5);
 grandient.colors = self.grandentArr[i / 4];
 [vw.layer addSublayer:grandient];
 grandient.mask = label.layer;
 label.frame = grandient.bounds;
 }
}
텍스트 를 그림 으로 변환 하 는 코드:

-(void)getTitleImg
{
 UIGraphicsBeginImageContext(self.topContentView.frame.size);
 CGContextRef context = UIGraphicsGetCurrentContext();

 if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) {
 [self.topContentView drawViewHierarchyInRect:self.topContentView.frame afterScreenUpdates:YES];
 }
 else
 {
 [self.topContentView.layer renderInContext:context];
 }

 UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();

 CGImageRef newImgRef = CGImageCreateWithImageInRect(img.CGImage, CGRectMake(self.gradientLayer.frame.origin.x, self.gradientLayer.frame.origin.y + 44, self.gradientLayer.frame.size.width, self.gradientLayer.frame.size.height));

 UIGraphicsBeginImageContextWithOptions(self.gradientLayer.frame.size, NO, [UIScreen mainScreen].scale);
 context = UIGraphicsGetCurrentContext();

 CGContextTranslateCTM(context, 0, self.gradientLayer.frame.size.height);
 CGContextScaleCTM(context, 1, -1);

 CGContextDrawImage(context, CGRectMake(0, 0, self.gradientLayer.frame.size.width, self.gradientLayer.frame.size.height), newImgRef);
 UIImage *newImg = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();

 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
 [library toolWriteImageToSavedPhotosAlbum:newImg.CGImage metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {

 if (error) {
  JGLog(@"    ");
 }
 } groupName:@"    "];

}
핵심 코드 는 위 와 같이 주로 CAGradientLayer,캡 처,컷 팅 방법 에 사용 되 었 다.
이상 은 본문의 전체 내용 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기