67 lines
1.7 KiB
Swift
67 lines
1.7 KiB
Swift
|
|
//
|
||
|
|
// EPIconFlagView.swift
|
||
|
|
// Crush
|
||
|
|
//
|
||
|
|
// Created by Leon on 2025/7/25.
|
||
|
|
//
|
||
|
|
|
||
|
|
import UIKit
|
||
|
|
import SnapKit
|
||
|
|
|
||
|
|
class EPIconFlagView: UIImageView {
|
||
|
|
|
||
|
|
// MARK: - Properties
|
||
|
|
|
||
|
|
private let icon: UIImageView
|
||
|
|
|
||
|
|
// MARK: - Initialization
|
||
|
|
|
||
|
|
override init(frame: CGRect) {
|
||
|
|
icon = UIImageView()
|
||
|
|
super.init(frame: frame)
|
||
|
|
|
||
|
|
// Setup constraints using SnapKit
|
||
|
|
snp.makeConstraints { make in
|
||
|
|
make.height.equalTo(24)
|
||
|
|
}
|
||
|
|
|
||
|
|
addSubview(icon)
|
||
|
|
icon.snp.makeConstraints { make in
|
||
|
|
make.size.equalTo(CGSize(width: 12, height: 12))
|
||
|
|
make.left.equalTo(6)
|
||
|
|
make.right.equalTo(-6)
|
||
|
|
make.centerY.equalToSuperview()
|
||
|
|
}
|
||
|
|
|
||
|
|
contentMode = .scaleToFill
|
||
|
|
}
|
||
|
|
|
||
|
|
@available(*, unavailable)
|
||
|
|
required init?(coder: NSCoder) {
|
||
|
|
fatalError("init(coder:) has not been implemented")
|
||
|
|
}
|
||
|
|
|
||
|
|
// MARK: - Public Methods
|
||
|
|
|
||
|
|
func setupRightTopLockStyle() {
|
||
|
|
configIconLocked(true)
|
||
|
|
layer.cornerRadius = 4
|
||
|
|
layer.masksToBounds = true
|
||
|
|
// Right-top and left-bottom corners rounded
|
||
|
|
// layer.maskedCorners = [.layerMaxXMinYCorner, .layerMinXMaxYCorner]
|
||
|
|
}
|
||
|
|
|
||
|
|
func configIconLocked(_ lock: Bool) {
|
||
|
|
if lock {
|
||
|
|
icon.image = MWIconFont.image(fromIcon: .iconPrivate, size: .init(width: 16, height: 16), color: .text)
|
||
|
|
backgroundColor = .c.csedn
|
||
|
|
image = nil
|
||
|
|
} else {
|
||
|
|
|
||
|
|
icon.image = MWIconFont.image(fromIcon: .iconPublic, size: .init(width: 16, height: 16), color: .text)
|
||
|
|
let gradient = CLSystemToken.gradient(token: .cpgn)
|
||
|
|
image = gradient.toImage(size: CGSize(width: 40, height: 32))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|