Files
bundesmessenger-ios/Riot/Modules/Common/Flow/ShapeView.swift
Neil Alexander 86cb17876c Load animation, colour corrections, fixed launch screen
Squashed commit of the following:

commit e11d0e589469db9ead0d96449f9e31677edb2031
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date:   Fri Jul 10 17:59:30 2020 +0100

    Fix colour in launch screen

commit aa59e85d309433a05992e446bdd789b59b87089d
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date:   Fri Jul 10 17:57:01 2020 +0100

    Display -> display

commit 6da06421bedfe7aff6a0ff1dff4360685e708cf2
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date:   Fri Jul 10 17:55:20 2020 +0100

    P3 colours

commit b1fc009ab9002eb75403c287ce75bdbf08e222cd
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date:   Fri Jul 10 17:52:22 2020 +0100

    Update Riot.xcodeproj

commit ac1d994c6eb3f863f5310364ee4582476d59b76e
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date:   Fri Jul 10 17:44:41 2020 +0100

    Revert changes to Images.swift and Storyboards.swift

commit 27c88f9b3ba7c22efd19f6e8aa17c2af17f3289b
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date:   Fri Jul 10 17:25:08 2020 +0100

    Add animation source files

commit d19ccd50009280b45f3165e1a2a03a2bd241ccf7
Merge: d6b651a8 2ed92204
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date:   Fri Jul 10 17:18:04 2020 +0100

    Fix launch screen and update loading screen

    Merge commit '2ed92204' into rebranding

commit 2ed922045cd6381202b8d7bb80136f8b24a95141
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date:   Fri Jul 10 17:13:56 2020 +0100

    Fix launch screen, smooth transition to loading animation
2020-07-10 17:59:57 +01:00

78 lines
2.8 KiB
Swift

// Copyright © 2016-2019 JABT
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions: The above copyright
// notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
import UIKit
open class ShapeView: UIView {
open var shapeLayer: CAShapeLayer {
return (layer as? CAShapeLayer)!
}
/// A sublayer which can be used to apply a gradient fill to `self`.
open var gradientLayer: CAGradientLayer? {
set {
// Remove old gradient layer
if let gradientLayer = gradientLayer {
gradientLayer.removeFromSuperlayer()
}
// Replace old gradient with new one
if let newGradientLayer = newValue {
layer.addSublayer(newGradientLayer)
}
}
get {
return layer.sublayers?.first(where: { $0 is CAGradientLayer }) as? CAGradientLayer
}
}
public func addGradient(type: CAGradientLayerType, startPoint: CGPoint, endPoint: CGPoint, stops: [(color: CGColor, location: NSNumber)]) {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = shapeLayer.bounds
self.gradientLayer = gradientLayer
let mask = CAShapeLayer()
mask.path = shapeLayer.path
mask.fillColor = UIColor.black.cgColor
mask.strokeColor = nil
gradientLayer.startPoint = startPoint
gradientLayer.endPoint = endPoint
gradientLayer.colors = stops.map { $0.color }
gradientLayer.locations = stops.map { $0.location }
gradientLayer.type = type
gradientLayer.frame = shapeLayer.bounds
gradientLayer.mask = mask
}
open var path: CGPath? {
get {
return shapeLayer.path
}
set {
shapeLayer.path = newValue
}
}
override open class var layerClass: AnyClass {
return CAShapeLayer.self
}
}