Skip to content

Instantly share code, notes, and snippets.

@BlueMilkApps
Created December 12, 2014 00:21
Show Gist options
  • Save BlueMilkApps/4e14df096e917a15ee1e to your computer and use it in GitHub Desktop.
Save BlueMilkApps/4e14df096e917a15ee1e to your computer and use it in GitHub Desktop.
PaintCode UIButton Image Example
import UIKit
public class TotemPaintCodeKit : NSObject {
//// Cache
private struct Cache {
static var imageOfSmileFace: UIImage?
static var smileFaceTargets: [AnyObject]?
}
//// Drawing Methods
public class func drawSmileFace() {
//// Bezier 3 Drawing
var bezier3Path = UIBezierPath()
bezier3Path.moveToPoint(CGPointMake(43.5, 20))
bezier3Path.addCurveToPoint(CGPointMake(38.55, 22.28), controlPoint1: CGPointMake(41.52, 20), controlPoint2: CGPointMake(39.74, 20.89))
bezier3Path.addCurveToPoint(CGPointMake(37, 26.5), controlPoint1: CGPointMake(37.58, 23.42), controlPoint2: CGPointMake(37, 24.89))
bezier3Path.addCurveToPoint(CGPointMake(43.5, 33), controlPoint1: CGPointMake(37, 30.09), controlPoint2: CGPointMake(39.91, 33))
bezier3Path.addCurveToPoint(CGPointMake(50, 26.5), controlPoint1: CGPointMake(47.09, 33), controlPoint2: CGPointMake(50, 30.09))
bezier3Path.addCurveToPoint(CGPointMake(43.5, 20), controlPoint1: CGPointMake(50, 22.91), controlPoint2: CGPointMake(47.09, 20))
bezier3Path.closePath()
bezier3Path.moveToPoint(CGPointMake(25.5, 20))
bezier3Path.addCurveToPoint(CGPointMake(20.94, 21.87), controlPoint1: CGPointMake(23.72, 20), controlPoint2: CGPointMake(22.11, 20.71))
bezier3Path.addCurveToPoint(CGPointMake(19, 26.5), controlPoint1: CGPointMake(19.74, 23.05), controlPoint2: CGPointMake(19, 24.69))
bezier3Path.addCurveToPoint(CGPointMake(25.5, 33), controlPoint1: CGPointMake(19, 30.09), controlPoint2: CGPointMake(21.91, 33))
bezier3Path.addCurveToPoint(CGPointMake(32, 26.5), controlPoint1: CGPointMake(29.09, 33), controlPoint2: CGPointMake(32, 30.09))
bezier3Path.addCurveToPoint(CGPointMake(25.5, 20), controlPoint1: CGPointMake(32, 22.91), controlPoint2: CGPointMake(29.09, 20))
bezier3Path.closePath()
bezier3Path.moveToPoint(CGPointMake(63, 33.5))
bezier3Path.addCurveToPoint(CGPointMake(34.5, 62), controlPoint1: CGPointMake(63, 49.24), controlPoint2: CGPointMake(50.24, 62))
bezier3Path.addCurveToPoint(CGPointMake(6, 33.5), controlPoint1: CGPointMake(18.76, 62), controlPoint2: CGPointMake(6, 49.24))
bezier3Path.addCurveToPoint(CGPointMake(12.45, 15.45), controlPoint1: CGPointMake(6, 26.65), controlPoint2: CGPointMake(8.42, 20.36))
bezier3Path.addCurveToPoint(CGPointMake(12.8, 15.03), controlPoint1: CGPointMake(12.56, 15.31), controlPoint2: CGPointMake(12.68, 15.17))
bezier3Path.addCurveToPoint(CGPointMake(34.5, 5), controlPoint1: CGPointMake(18.02, 8.89), controlPoint2: CGPointMake(25.81, 5))
bezier3Path.addCurveToPoint(CGPointMake(63, 33.5), controlPoint1: CGPointMake(50.24, 5), controlPoint2: CGPointMake(63, 17.76))
bezier3Path.closePath()
bezier3Path.moveToPoint(CGPointMake(15.5, 44.5))
bezier3Path.addCurveToPoint(CGPointMake(54.5, 44.5), controlPoint1: CGPointMake(15.5, 44.5), controlPoint2: CGPointMake(34.5, 59.5))
UIColor.blueColor().setFill()
bezier3Path.fill()
}
//// Generated Images
public class var imageOfSmileFace: UIImage {
if Cache.imageOfSmileFace != nil {
return Cache.imageOfSmileFace!
}
UIGraphicsBeginImageContextWithOptions(CGSizeMake(68, 69), false, 0)
TotemPaintCodeKit.drawSmileFace()
Cache.imageOfSmileFace = UIGraphicsGetImageFromCurrentImageContext()!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
UIGraphicsEndImageContext()
return Cache.imageOfSmileFace!
}
//// Customization Infrastructure
@IBOutlet var smileFaceTargets: [AnyObject]! {
get { return Cache.smileFaceTargets }
set {
Cache.smileFaceTargets = newValue
for target: AnyObject in newValue {
target.setImage(TotemPaintCodeKit.imageOfSmileFace)
}
}
}
}
@objc protocol StyleKitSettableImage {
func setImage(image: UIImage!)
}
@objc protocol StyleKitSettableSelectedImage {
func setSelectedImage(image: UIImage!)
}
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var button1: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
button1.setImage(TotemPaintCodeKit.imageOfSmileFace, forState: UIControlState.Normal)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment