Skip to content

Instantly share code, notes, and snippets.

@carlynorama
Created May 18, 2017 16:55
Show Gist options
  • Select an option

  • Save carlynorama/ac3da1a64fb36842ac911efbb14d6fdc to your computer and use it in GitHub Desktop.

Select an option

Save carlynorama/ac3da1a64fb36842ac911efbb14d6fdc to your computer and use it in GitHub Desktop.
//
// ViewController.swift
// CALayerLearning
//
// update of code from the following tutorial
// https://www.raywenderlich.com/90488/calayer-in-ios-with-swift-10-examples
// see also https://github.com/scotteg/LayerPlayer
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var viewForLayer: UIView!
@IBAction func viewTap(_ sender: UITapGestureRecognizer) {
toggleLayerShadowOpacity((sender.view?.layer)!)
}
@IBAction func viewPinch(_ sender: UIPinchGestureRecognizer) {
scaleView((sender.view?.layer)!, scale:sender.scale)
}
var myLayer:CALayer {
get { return viewForLayer.layer }
}
func setupLayer(_ layer:CALayer) {
layer.backgroundColor = UIColor.blue.cgColor
layer.borderWidth = 100.0
layer.borderColor = UIColor.red.cgColor
layer.shadowOpacity = 0.7
layer.shadowRadius = 10.0
layer.contents = UIImage(named: "star")?.cgImage
layer.contentsGravity = kCAGravityCenter
}
func toggleLayerShadowOpacity(_ layer:CALayer) {
layer.shadowOpacity = layer.shadowOpacity == 0.7 ? 0.0 : 0.7
}
func scaleView(_ layer:CALayer, scale:CGFloat) {
let offset: CGFloat = scale < 1 ? 5.0 : -5.0
let oldFrame = layer.frame
let oldOrigin = oldFrame.origin
let newOrigin = CGPoint(x: oldOrigin.x + offset, y: oldOrigin.y + offset)
let newSize = CGSize(width: oldFrame.width + (offset * -2.0), height: oldFrame.height + (offset * -2.0))
let newFrame = CGRect(origin: newOrigin, size: newSize)
if newFrame.width >= 100.0 && newFrame.width <= 300.0 {
layer.borderWidth -= offset
layer.cornerRadius += (offset / 2.0)
layer.frame = newFrame
}
}
override func viewDidLoad() {
super.viewDidLoad()
setupLayer(myLayer)
// Do any additional setup after loading the view, typically from a nib.
}
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