90 lines
2.5 KiB
Swift
90 lines
2.5 KiB
Swift
//
|
|
// SRNavgationTitleView.swift
|
|
// SynthReel
|
|
//
|
|
// Created by 澜声世纪 on 2025/11/25.
|
|
// Copyright © 2025 SR. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
import UIKit
|
|
|
|
class SRNavgationTitleView: UIView {
|
|
|
|
private let leftImageView: UIImageView = {
|
|
let imageView = UIImageView(image: UIImage(named: "闪光 1"))
|
|
imageView.contentMode = .scaleAspectFit
|
|
return imageView
|
|
}()
|
|
|
|
private let rightImageView: UIImageView = {
|
|
let imageView = UIImageView(image: UIImage(named: "闪光 1"))
|
|
imageView.contentMode = .scaleAspectFit
|
|
return imageView
|
|
}()
|
|
|
|
private let titleLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .font(ofSize: 18, weight: .bold).withBoldItalic()
|
|
label.textAlignment = .center
|
|
label.textColor = .white
|
|
return label
|
|
}()
|
|
|
|
// MARK: - Init
|
|
init(title: String) {
|
|
super.init(frame: .zero)
|
|
titleLabel.text = title
|
|
addSubview(leftImageView)
|
|
addSubview(titleLabel)
|
|
addSubview(rightImageView)
|
|
sizeToFit()
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
// MARK: - Layout & Size
|
|
override func sizeThatFits(_ size: CGSize) -> CGSize {
|
|
let padding: CGFloat = 6
|
|
let imageW: CGFloat = 20
|
|
let height: CGFloat = 30
|
|
|
|
titleLabel.sizeToFit()
|
|
|
|
let totalWidth = imageW + padding + titleLabel.bounds.width + padding + imageW
|
|
return CGSize(width: totalWidth, height: height)
|
|
}
|
|
|
|
override func layoutSubviews() {
|
|
super.layoutSubviews()
|
|
|
|
let padding: CGFloat = 10
|
|
let imageW: CGFloat = 20
|
|
let imageH: CGFloat = 20
|
|
let height = bounds.height
|
|
|
|
// 左图
|
|
leftImageView.frame = CGRect(x: 0,
|
|
y: (height - imageH) / 2,
|
|
width: imageW,
|
|
height: imageH)
|
|
|
|
// 标题
|
|
let titleX = leftImageView.frame.maxX + padding
|
|
titleLabel.frame = CGRect(x: titleX,
|
|
y: 0,
|
|
width: titleLabel.bounds.width,
|
|
height: height)
|
|
|
|
// 右图
|
|
let rightX = titleLabel.frame.maxX + padding
|
|
rightImageView.frame = CGRect(x: rightX,
|
|
y: (height - imageH) / 2,
|
|
width: imageW,
|
|
height: imageH)
|
|
}
|
|
}
|