Skip to content

Instantly share code, notes, and snippets.

View jonathanduty's full-sized avatar

Jonathan Duty jonathanduty

View GitHub Profile
@jonathanduty
jonathanduty / SmallCent.swift
Created May 18, 2016 11:04
create a 10.99 (with small "99") string that can be placed in a label.
func formatPriceString(costString:String,costLabel:UILabel) {
if let range = costString.rangeOfString(".") {
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: costString)
let pos = costString.startIndex.distanceTo(range.startIndex)
let centsRange = NSMakeRange(pos, 3)
let smallFont = UIFont(name: costLabel.font.fontName,size:10)
let offsetAmount = self.costLabel.font.capHeight - smallFont!.capHeight
attributeString.addAttribute(NSFontAttributeName, value: smallFont!, range: centsRange)
attributeString.addAttribute(NSBaselineOffsetAttributeName, value: offsetAmount, range: centsRange)
//
// IDate.swift
//
// Created by Jonathan Duty on 6/30/16.
//
extension NSDate {
func timeAgoString(numericDates:Bool) -> String {
@jonathanduty
jonathanduty / OnMain.swift
Created August 16, 2016 19:12
Neato OnMain swift keyword.
import Foundation
func onMain(closure: () -> ()) {
if NSThread.isMainThread() {
closure()
}
else {
dispatch_async(dispatch_get_main_queue(), closure)
}
}
@jonathanduty
jonathanduty / String+htmlDecode.swift
Created October 28, 2016 18:27
html decode string swift
import Foundation
public extension String {
init(htmlEncodedString: String) {
let encodedData = htmlEncodedString.dataUsingEncoding(NSUTF8StringEncoding)!
let attributedOptions : [String: AnyObject] = [
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding
]
class HumanTime: NSObject {
let minute = 1
let hour = 60
let day = 60 * 24
let week = 60 * 24 * 7
let now: Date
convenience override init() {
self.init(now: Date())
func onMainThread(_ block: @escaping () -> Void) {
DispatchQueue.main.async {
block()
}
}
struct Device {
let ran: Bool
@discardableResult static func when4sOrSmaller(_ block: () -> Void) -> Device {
return runBlockIfTrue(UIScreen.is4sOrSmaller, block: block)
}
@discardableResult static func when5sOrSmaller(_ block: () -> Void) -> Device {
return runBlockIfTrue(UIScreen.is5sOrSmaller, block: block)
}
import UIKit
@IBDesignable class GradientView: UIView {
@IBInspectable var topColor: UIColor = UIColor.white {
didSet {
setNeedsLayout()
}
}
class Cell: UITableViewCell {
override func drawRect(rect: CGRect) {
var bubbleSpace = CGRectMake(20.0, self.bounds.origin.y, self.bounds.width - 20, self.bounds.height)
let bubblePath1 = UIBezierPath(roundedRect: bubbleSpace, byRoundingCorners: .TopLeft | .TopRight | .BottomRight, cornerRadii: CGSize(width: 20.0, height: 20.0))
let bubblePath = UIBezierPath(roundedRect: bubbleSpace, cornerRadius: 20.0)
UIColor.greenColor().setStroke()
UIColor.greenColor().setFill()
import UIKit
extension UIView {
var absoluteFrame: CGRect {
return self.superview!.convert(self.frame, to: nil)
}
func convertFrame(toParentView parentView: UIView) -> CGRect {
return self.superview!.convert(self.frame, to: parentView)
}