将NSString变成贝塞尔曲线

简介:

将NSString变成贝塞尔曲线

https://github.com/aderussell/string-to-CGPathRef

 

NSString中的字符串是可以通过CoreText框架将其转换成贝塞尔曲线的.

源码:

//
//  RootViewController.m
//  StringPath
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"
#import "UIBezierPath+TextPaths.h"
#import "FontPool.h"
#import "YXGCD.h"

@interface RootViewController ()

@property (nonatomic, strong) GCDTimer *timer;

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];

    // 注册字体
    [FontPool registerFont:bundleFont(@"新蒂小丸子体.ttf")
                  withName:@"新蒂小丸子体"];
    
    // 获取形状的layer
    CAShapeLayer *line1 = [CAShapeLayer new];
    line1.frame = CGRectMake(0, 0, 200, 200);
    line1.fillColor = [UIColor clearColor].CGColor;
    line1.strokeColor = [UIColor blackColor].CGColor;
    line1.strokeStart = 0.f;
    line1.strokeEnd   = 1.f;
    line1.lineWidth   = 1.f;
    
    // 从string上获取到CGPath
    line1.path = [UIBezierPath pathFromString:@"游贤明"
                                     WithFont:[UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子体", 0)
                                                              size:60.f]].CGPath;
    // 让文字按照正常的顺序显示
    line1.bounds = CGPathGetBoundingBox(line1.path);
    line1.geometryFlipped = YES;
    
    // 设置颜色渐变layer
    CAGradientLayer *colorLayer = [CAGradientLayer layer];
    colorLayer.frame = CGRectMake(0, 0, 200, 200);
    
    // 设置遮罩
    colorLayer.mask = line1;
    colorLayer.colors = @[(id)[UIColor redColor].CGColor,
                          (id)[UIColor cyanColor].CGColor];
    colorLayer.position = self.view.center;
    [self.view.layer addSublayer:colorLayer];
    
    // 动画事件
    _timer = [[GCDTimer alloc] initInQueue:[GCDQueue mainQueue]];
    [_timer event:^{
        line1.strokeEnd = arc4random()%100/100.f;
        colorLayer.colors = @[(id)[UIColor colorWithRed:arc4random()%255/255.f
                                                  green:arc4random()%255/255.f
                                                   blue:arc4random()%255/255.f
                                                  alpha:1].CGColor,
                              (id)[UIColor colorWithRed:arc4random()%255/255.f
                                                  green:arc4random()%255/255.f
                                                   blue:arc4random()%255/255.f
                                                  alpha:1].CGColor,
                              (id)[UIColor colorWithRed:arc4random()%255/255.f
                                                  green:arc4random()%255/255.f
                                                   blue:arc4random()%255/255.f
                                                  alpha:1].CGColor,
                              (id)[UIColor colorWithRed:arc4random()%255/255.f
                                                  green:arc4random()%255/255.f
                                                   blue:arc4random()%255/255.f
                                                  alpha:1].CGColor,
                              (id)[UIColor colorWithRed:arc4random()%255/255.f
                                                  green:arc4random()%255/255.f
                                                   blue:arc4random()%255/255.f
                                                  alpha:1].CGColor];
    } timeInterval:NSEC_PER_SEC];
    [_timer start];
}

@end

效果:

核心代码:

 

 

附录:

http://stackoverflow.com/questions/7573383/how-to-create-a-multiline-string-or-multiline-label-as-a-cgpath-in-ios

目录
相关文章
|
8月前
NSNumber、NSString之间的相互转换
NSNumber、NSString之间的相互转换
113 0
使用手势对UIImageView进行缩放、旋转和移动
使用手势对UIImageView进行缩放、旋转和移动
106 0
UIView随手指的移动
UIView随手指的移动
60 0
CABasicAnimation旋转动画
CABasicAnimation旋转动画
187 0
CABasicAnimation旋转动画
|
iOS开发
iOS开发之指定UIView的某几个角(小于4)为圆角
在iOS开发中,我们经常会遇到View设置圆角的问题,如果需要将UIView的4个角全部都为圆角,做法相当简单,只需设置其Layer的cornerRadius属性即可(项目需要使用QuartzCore框架)。而若要指定某几个角(小于4)为圆角而别的不变时,这种方法就不好用了。
iOS开发之指定UIView的某几个角(小于4)为圆角
|
Windows
NSString的boolValue方法甚解
前言 NSString的boolValue之前有使用,但是一直没有真正了解什么时候返回YES(true)或NO(false)。其实,苹果在官方文档中已经写的很清楚,按command + control 点击boolValue进入文档就可以看到: boolValue The Boolean value of the string.
969 0
|
UED 缓存 异构计算
UIImageView添加圆角的几种方法
喜欢我的可以关注收藏我的个人博客:RobberJJ 创建一个UIImageView对象: UIImageView * poImgView = [[UIImageView alloc] init]; 第一种方法 poImgView.
969 0

热门文章

最新文章