Skip to content

Instantly share code, notes, and snippets.

@CocoaRush
Created February 18, 2014 03:14
Show Gist options
  • Save CocoaRush/9064062 to your computer and use it in GitHub Desktop.
Save CocoaRush/9064062 to your computer and use it in GitHub Desktop.
a Martini shape created for UIBezierPath, best shaped with a frame that have the same width and height.
+ (UIBezierPath *)martiniShape:(CGRect)originalFrame {
float x = CGRectGetMinX(originalFrame);
float y = CGRectGetMinY(originalFrame);
float width = CGRectGetWidth(originalFrame);
float height = CGRectGetHeight(originalFrame);
UIBezierPath* bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint: CGPointMake(x + 0.33980 * width, y + 0.99174 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.35471 * width, y + 0.98285 * height) controlPoint1: CGPointMake(x + 0.34475 * width, y + 0.98872 * height) controlPoint2: CGPointMake(x + 0.34935 * width, y + 0.98462 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.46691 * width, y + 0.94635 * height) controlPoint1: CGPointMake(x + 0.39206 * width, y + 0.97052 * height) controlPoint2: CGPointMake(x + 0.42994 * width, y + 0.95972 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.50127 * width, y + 0.89428 * height) controlPoint1: CGPointMake(x + 0.50294 * width, y + 0.93333 * height) controlPoint2: CGPointMake(x + 0.50324 * width, y + 0.93221 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.47934 * width, y + 0.48717 * height) controlPoint1: CGPointMake(x + 0.49420 * width, y + 0.75856 * height) controlPoint2: CGPointMake(x + 0.48655 * width, y + 0.62288 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.45734 * width, y + 0.44393 * height) controlPoint1: CGPointMake(x + 0.47838 * width, y + 0.46920 * height) controlPoint2: CGPointMake(x + 0.47255 * width, y + 0.45603 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.16428 * width, y + 0.20750 * height) controlPoint1: CGPointMake(x + 0.35906 * width, y + 0.36587 * height) controlPoint2: CGPointMake(x + 0.26184 * width, y + 0.28648 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.15320 * width, y + 0.19354 * height) controlPoint1: CGPointMake(x + 0.16040 * width, y + 0.20436 * height) controlPoint2: CGPointMake(x + 0.15664 * width, y + 0.20107 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.29889 * width, y + 0.19354 * height) controlPoint1: CGPointMake(x + 0.20176 * width, y + 0.19354 * height) controlPoint2: CGPointMake(x + 0.25033 * width, y + 0.19354 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.30104 * width, y + 0.18650 * height) controlPoint1: CGPointMake(x + 0.29961 * width, y + 0.19119 * height) controlPoint2: CGPointMake(x + 0.30032 * width, y + 0.18885 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.28597 * width, y + 0.17821 * height) controlPoint1: CGPointMake(x + 0.29604 * width, y + 0.18361 * height) controlPoint2: CGPointMake(x + 0.29131 * width, y + 0.17917 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.26643 * width, y + 0.17965 * height) controlPoint1: CGPointMake(x + 0.27974 * width, y + 0.17710 * height) controlPoint2: CGPointMake(x + 0.27297 * width, y + 0.17908 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.18842 * width, y + 0.09291 * height) controlPoint1: CGPointMake(x + 0.21686 * width, y + 0.18396 * height) controlPoint2: CGPointMake(x + 0.17498 * width, y + 0.13771 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.20113 * width, y + 0.06899 * height) controlPoint1: CGPointMake(x + 0.19098 * width, y + 0.08438 * height) controlPoint2: CGPointMake(x + 0.19543 * width, y + 0.07577 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.20197 * width, y + 0.03639 * height) controlPoint1: CGPointMake(x + 0.21061 * width, y + 0.05770 * height) controlPoint2: CGPointMake(x + 0.21021 * width, y + 0.04776 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.20014 * width, y + 0.01653 * height) controlPoint1: CGPointMake(x + 0.19775 * width, y + 0.03056 * height) controlPoint2: CGPointMake(x + 0.19238 * width, y + 0.02389 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.20622 * width, y + 0.01653 * height) controlPoint1: CGPointMake(x + 0.20217 * width, y + 0.01653 * height) controlPoint2: CGPointMake(x + 0.20419 * width, y + 0.01653 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.26086 * width, y + 0.04176 * height) controlPoint1: CGPointMake(x + 0.21808 * width, y + 0.03887 * height) controlPoint2: CGPointMake(x + 0.23599 * width, y + 0.04483 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.32572 * width, y + 0.07827 * height) controlPoint1: CGPointMake(x + 0.28981 * width, y + 0.03818 * height) controlPoint2: CGPointMake(x + 0.31259 * width, y + 0.05373 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.32127 * width, y + 0.15045 * height) controlPoint1: CGPointMake(x + 0.33827 * width, y + 0.10174 * height) controlPoint2: CGPointMake(x + 0.33652 * width, y + 0.12710 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.31470 * width, y + 0.17645 * height) controlPoint1: CGPointMake(x + 0.31626 * width, y + 0.15812 * height) controlPoint2: CGPointMake(x + 0.30828 * width, y + 0.16529 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.34288 * width, y + 0.19198 * height) controlPoint1: CGPointMake(x + 0.32111 * width, y + 0.18760 * height) controlPoint2: CGPointMake(x + 0.32943 * width, y + 0.19194 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.85274 * width, y + 0.19471 * height) controlPoint1: CGPointMake(x + 0.51283 * width, y + 0.19249 * height) controlPoint2: CGPointMake(x + 0.68279 * width, y + 0.19369 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.87303 * width, y + 0.19471 * height) controlPoint1: CGPointMake(x + 0.85817 * width, y + 0.19474 * height) controlPoint2: CGPointMake(x + 0.86360 * width, y + 0.19471 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.85907 * width, y + 0.20696 * height) controlPoint1: CGPointMake(x + 0.86625 * width, y + 0.20068 * height) controlPoint2: CGPointMake(x + 0.86277 * width, y + 0.20395 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.55737 * width, y + 0.45244 * height) controlPoint1: CGPointMake(x + 0.75854 * width, y + 0.28883 * height) controlPoint2: CGPointMake(x + 0.65802 * width, y + 0.37072 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.54495 * width, y + 0.47493 * height) controlPoint1: CGPointMake(x + 0.54995 * width, y + 0.45846 * height) controlPoint2: CGPointMake(x + 0.54548 * width, y + 0.46444 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.53465 * width, y + 0.64813 * height) controlPoint1: CGPointMake(x + 0.54201 * width, y + 0.53269 * height) controlPoint2: CGPointMake(x + 0.53739 * width, y + 0.59036 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.52367 * width, y + 0.90977 * height) controlPoint1: CGPointMake(x + 0.53051 * width, y + 0.73532 * height) controlPoint2: CGPointMake(x + 0.52772 * width, y + 0.82257 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.54174 * width, y + 0.93805 * height) controlPoint1: CGPointMake(x + 0.52297 * width, y + 0.92467 * height) controlPoint2: CGPointMake(x + 0.52709 * width, y + 0.93346 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.62181 * width, y + 0.96534 * height) controlPoint1: CGPointMake(x + 0.56864 * width, y + 0.94648 * height) controlPoint2: CGPointMake(x + 0.59556 * width, y + 0.95510 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.67679 * width, y + 0.99174 * height) controlPoint1: CGPointMake(x + 0.64069 * width, y + 0.97271 * height) controlPoint2: CGPointMake(x + 0.65850 * width, y + 0.98284 * height)];
[bezierPath addCurveToPoint: CGPointMake(x + 0.33980 * width, y + 0.99174 * height) controlPoint1: CGPointMake(x + 0.56446 * width, y + 0.99174 * height) controlPoint2: CGPointMake(x + 0.45213 * width, y + 0.99174 * height)];
[bezierPath closePath];
bezierPath.miterLimit = 4;
return bezierPath;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment