forked from zelo72/mastodon-ios
71 lines
1.7 KiB
Swift
71 lines
1.7 KiB
Swift
//
|
|
// UIView.swift
|
|
// Mastodon
|
|
//
|
|
// Created by sxiaojian on 2021/2/4.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
// MARK: - Convenience view creation method
|
|
extension UIView {
|
|
|
|
static let separatorColor: UIColor = {
|
|
UIColor(dynamicProvider: { collection in
|
|
switch collection.userInterfaceStyle {
|
|
case .dark:
|
|
return ThemeService.shared.currentTheme.value.separator
|
|
default:
|
|
return .separator
|
|
}
|
|
})
|
|
}()
|
|
|
|
static var separatorLine: UIView {
|
|
let line = UIView()
|
|
line.backgroundColor = UIView.separatorColor
|
|
return line
|
|
}
|
|
|
|
static func separatorLineHeight(of view: UIView) -> CGFloat {
|
|
return 1.0 / view.traitCollection.displayScale
|
|
}
|
|
|
|
}
|
|
|
|
// MARK: - Convenience view appearance modification method
|
|
extension UIView {
|
|
@discardableResult
|
|
func applyCornerRadius(radius: CGFloat) -> Self {
|
|
layer.masksToBounds = true
|
|
layer.cornerRadius = radius
|
|
layer.cornerCurve = .continuous
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func applyShadow(
|
|
color: UIColor,
|
|
alpha: Float,
|
|
x: CGFloat,
|
|
y: CGFloat,
|
|
blur: CGFloat,
|
|
spread: CGFloat = 0) -> Self
|
|
{
|
|
layer.masksToBounds = false
|
|
layer.shadowColor = color.cgColor
|
|
layer.shadowOpacity = alpha
|
|
layer.shadowOffset = CGSize(width: x, height: y)
|
|
layer.shadowRadius = blur / 2.0
|
|
if spread == 0 {
|
|
layer.shadowPath = nil
|
|
} else {
|
|
let dx = -spread
|
|
let rect = bounds.insetBy(dx: dx, dy: dx)
|
|
layer.shadowPath = UIBezierPath(rect: rect).cgPath
|
|
}
|
|
return self
|
|
}
|
|
}
|
|
|