Add gradient backgrounds in passcode entry screen

This commit is contained in:
Ilya Laktyushin
2021-07-07 02:31:12 +03:00
parent ad98e74477
commit 4fcb54c687
11 changed files with 200 additions and 87 deletions

View File

@@ -1,19 +1,40 @@
import Foundation
import UIKit
import AsyncDisplayKit
import Display
import ImageBlur
import FastBlur
import GradientBackground
protocol PasscodeBackground {
var size: CGSize { get }
var backgroundImage: UIImage { get }
var foregroundImage: UIImage { get }
var backgroundImage: UIImage? { get }
var foregroundImage: UIImage? { get }
func makeBackgroundNode() -> ASDisplayNode?
}
final class CustomPasscodeBackground: PasscodeBackground {
private let colors: [UIColor]
public private(set) var size: CGSize
public private(set) var backgroundImage: UIImage? = nil
public private(set) var foregroundImage: UIImage? = nil
init(size: CGSize, colors: [UIColor]) {
self.size = size
self.colors = colors
}
func makeBackgroundNode() -> ASDisplayNode? {
return createGradientBackgroundNode(colors: self.colors)
}
}
final class GradientPasscodeBackground: PasscodeBackground {
public private(set) var size: CGSize
public private(set) var backgroundImage: UIImage
public private(set) var foregroundImage: UIImage
public private(set) var backgroundImage: UIImage?
public private(set) var foregroundImage: UIImage?
init(size: CGSize, backgroundColors: (UIColor, UIColor), buttonColor: UIColor) {
self.size = size
@@ -35,12 +56,16 @@ final class GradientPasscodeBackground: PasscodeBackground {
context.fill(bounds)
})!
}
func makeBackgroundNode() -> ASDisplayNode? {
return nil
}
}
final class ImageBasedPasscodeBackground: PasscodeBackground {
public private(set) var size: CGSize
public private(set) var backgroundImage: UIImage
public private(set) var foregroundImage: UIImage
public private(set) var backgroundImage: UIImage?
public private(set) var foregroundImage: UIImage?
init(image: UIImage, size: CGSize) {
self.size = size
@@ -82,4 +107,8 @@ final class ImageBasedPasscodeBackground: PasscodeBackground {
}
self.backgroundImage = backgroundContext.generateImage()!
}
func makeBackgroundNode() -> ASDisplayNode? {
return nil
}
}