Skip to content

Instantly share code, notes, and snippets.

@ApolloZhu
Last active June 26, 2017 04:51
Show Gist options
  • Save ApolloZhu/2a5bb72b5a587b7e843c971a89ab4b0b to your computer and use it in GitHub Desktop.
Save ApolloZhu/2a5bb72b5a587b7e843c971a89ab4b0b to your computer and use it in GitHub Desktop.
[Rainbow Layer] Implementing "rainbow" layer with Swift Playground on iPad #swift #playground #iOS
//#-editable-code
// Additional Comments
//#-end-editable-code
// Contents.swift
// Rainbow
//
// Created by Apollo Zhu (https://github.com/ApolloZhu) on 2016/11/25.
// Copyright (c) 2015-2017 WWITDC. All rights reserved.
//
//#-editable-code
// Additional Frameworks and Libraries
//#-end-editable-code
//#-hidden-code
import UIKit
import PlaygroundSupport
//#-end-hidden-code
class HueGradientLayer: CAGradientLayer {
//#-hidden-code
override init() {
super.init()
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
override init(layer: Any) {
super.init(layer: layer)
setup()
}
//#-end-hidden-code
func setup() {
//#-editable-code
startPoint = CGPoint(x: 0.5, y: 0)
endPoint = CGPoint(x:0.5, y: 1)
let controls = [CGFloat](stride(from: 0, through: 1, by: 0.01))
colors = controls.map {
UIColor(hue: $0, saturation: 1, brightness: 1, alpha: 1).cgColor
}
locations = controls as [NSNumber]?
//#-end-editable-code
}
}
class HueGradientView: UIView {
override open class var layerClass: AnyClass {
return HueGradientLayer.self
}
//#-editable-code
//#-end-editable-code
}
//#-hidden-code
var view: UIView = HueGradientView()
//#-end-hidden-code
view = HueGradientView()
//#-hidden-code
let vc = UIViewController()
PlaygroundPage.current.liveView = vc
vc.view = view
//#-end-hidden-code
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment