|
// |
|
// CAShapeLayer+customShape.m |
|
// |
|
// |
|
// Created by hmiorroi on 5/3/15. |
|
// Copyright (c) 2015 hmiorroi. All rights reserved. |
|
// |
|
|
|
#import "CAShapeLayer+customShape.h" |
|
|
|
@implementation CAShapeLayer (customShape) |
|
|
|
+ (CAShapeLayer*)starIconWithFrame:(CGRect)rect |
|
{ |
|
UIBezierPath *path = [UIBezierPath bezierPath]; |
|
[path moveToPoint:CGPointMake(34.997, 29.809)]; |
|
[path addCurveToPoint:CGPointMake(32.132, 31.89) controlPoint1:CGPointMake(34.51, 30.796) controlPoint2:CGPointMake(33.221, 31.732)]; |
|
[path addCurveToPoint:CGPointMake(13.979, 34.528) controlPoint1:CGPointMake(32.132, 31.89) controlPoint2:CGPointMake(13.979, 34.528)]; |
|
[path addCurveToPoint:CGPointMake(13.432, 36.212) controlPoint1:CGPointMake(12.891, 34.686) controlPoint2:CGPointMake(12.644, 35.444)]; |
|
[path addCurveToPoint:CGPointMake(26.568, 49.016) controlPoint1:CGPointMake(13.432, 36.212) controlPoint2:CGPointMake(26.568, 49.016)]; |
|
[path addCurveToPoint:CGPointMake(27.662, 52.383) controlPoint1:CGPointMake(27.356, 49.783) controlPoint2:CGPointMake(27.848, 51.299)]; |
|
[path addCurveToPoint:CGPointMake(24.561, 70.463) controlPoint1:CGPointMake(27.662, 52.383) controlPoint2:CGPointMake(24.561, 70.463)]; |
|
[path addCurveToPoint:CGPointMake(25.993, 71.503) controlPoint1:CGPointMake(24.375, 71.547) controlPoint2:CGPointMake(25.02, 72.015)]; |
|
[path addCurveToPoint:CGPointMake(42.23, 62.967) controlPoint1:CGPointMake(25.993, 71.503) controlPoint2:CGPointMake(42.23, 62.967)]; |
|
[path addCurveToPoint:CGPointMake(45.77, 62.967) controlPoint1:CGPointMake(43.203, 62.455) controlPoint2:CGPointMake(44.797, 62.455)]; |
|
[path addCurveToPoint:CGPointMake(62.007, 71.503) controlPoint1:CGPointMake(45.77, 62.967) controlPoint2:CGPointMake(62.007, 71.503)]; |
|
[path addCurveToPoint:CGPointMake(63.439, 70.463) controlPoint1:CGPointMake(62.98, 72.015) controlPoint2:CGPointMake(63.625, 71.547)]; |
|
[path addCurveToPoint:CGPointMake(60.338, 52.383) controlPoint1:CGPointMake(63.439, 70.463) controlPoint2:CGPointMake(60.338, 52.383)]; |
|
[path addCurveToPoint:CGPointMake(61.432, 49.016) controlPoint1:CGPointMake(60.152, 51.299) controlPoint2:CGPointMake(60.644, 49.783)]; |
|
[path addCurveToPoint:CGPointMake(74.568, 36.212) controlPoint1:CGPointMake(61.432, 49.016) controlPoint2:CGPointMake(74.568, 36.212)]; |
|
[path addCurveToPoint:CGPointMake(74.021, 34.528) controlPoint1:CGPointMake(75.356, 35.444) controlPoint2:CGPointMake(75.109, 34.686)]; |
|
[path addCurveToPoint:CGPointMake(55.868, 31.89) controlPoint1:CGPointMake(74.021, 34.528) controlPoint2:CGPointMake(55.868, 31.89)]; |
|
[path addCurveToPoint:CGPointMake(53.003, 29.809) controlPoint1:CGPointMake(54.779, 31.732) controlPoint2:CGPointMake(53.49, 30.796)]; |
|
[path addCurveToPoint:CGPointMake(44.885, 13.36) controlPoint1:CGPointMake(53.003, 29.809) controlPoint2:CGPointMake(44.885, 13.36)]; |
|
[path addCurveToPoint:CGPointMake(43.115, 13.36) controlPoint1:CGPointMake(44.398, 12.373) controlPoint2:CGPointMake(43.602, 12.373)]; |
|
[path addCurveToPoint:CGPointMake(34.997, 29.809) controlPoint1:CGPointMake(43.115, 13.36) controlPoint2:CGPointMake(34.997, 29.809)]; |
|
[path moveToPoint:CGPointMake(88, 44)]; |
|
[path addCurveToPoint:CGPointMake(44, 88) controlPoint1:CGPointMake(88, 68.301) controlPoint2:CGPointMake(68.301, 88)]; |
|
[path addCurveToPoint:CGPointMake(0, 44) controlPoint1:CGPointMake(19.699, 88) controlPoint2:CGPointMake(0, 68.301)]; |
|
[path addCurveToPoint:CGPointMake(44, 0) controlPoint1:CGPointMake(0, 19.699) controlPoint2:CGPointMake(19.699, 0)]; |
|
[path addCurveToPoint:CGPointMake(88, 44) controlPoint1:CGPointMake(68.301, 0) controlPoint2:CGPointMake(88, 19.699)]; |
|
|
|
CGFloat wRatio = rect.size.width / 88.0f; |
|
CGFloat hRatio = rect.size.height / 88.0f; |
|
CGAffineTransform scale = CGAffineTransformMakeScale(wRatio, hRatio); |
|
[path applyTransform:scale]; |
|
|
|
CAShapeLayer *star = [CAShapeLayer layer]; |
|
star.frame = rect; |
|
star.path = path.CGPath; |
|
star.fillRule = kCAFillRuleEvenOdd; |
|
return star; |
|
} |
|
|
|
@end |
This comment has been minimized.
Thanks, it's very useful. I modified pathExport.js for supporting swift extension, though it's a bit difference with yours.
https://gist.github.com/mitolog/3bc99de3bcd63c712051