fix: 优化旅拍相册入口与二维码提示布局
This commit is contained in:
@ -20,7 +20,9 @@ final class TravelAlbumCodeDialogViewController: UIViewController {
|
|||||||
private let albumNameLabel = UILabel()
|
private let albumNameLabel = UILabel()
|
||||||
private let qrImageView = UIImageView()
|
private let qrImageView = UIImageView()
|
||||||
private let loadingIndicator = UIActivityIndicatorView(style: .medium)
|
private let loadingIndicator = UIActivityIndicatorView(style: .medium)
|
||||||
private let hintLabel = UILabel()
|
private let hintLabel = TravelAlbumCodeHintLabel(
|
||||||
|
contentInsets: UIEdgeInsets(top: 8, left: 16, bottom: 8, right: 16)
|
||||||
|
)
|
||||||
private let downloadButton = UIButton(type: .system)
|
private let downloadButton = UIButton(type: .system)
|
||||||
|
|
||||||
init(state: TravelAlbumEntryViewModel.AlbumCodeState) {
|
init(state: TravelAlbumEntryViewModel.AlbumCodeState) {
|
||||||
@ -117,8 +119,8 @@ final class TravelAlbumCodeDialogViewController: UIViewController {
|
|||||||
hintLabel.snp.makeConstraints { make in
|
hintLabel.snp.makeConstraints { make in
|
||||||
make.top.equalTo(qrImageView.snp.bottom).offset(18)
|
make.top.equalTo(qrImageView.snp.bottom).offset(18)
|
||||||
make.centerX.equalToSuperview()
|
make.centerX.equalToSuperview()
|
||||||
make.height.equalTo(34)
|
|
||||||
make.leading.greaterThanOrEqualToSuperview().offset(20)
|
make.leading.greaterThanOrEqualToSuperview().offset(20)
|
||||||
|
make.trailing.lessThanOrEqualToSuperview().offset(-20)
|
||||||
}
|
}
|
||||||
downloadButton.snp.makeConstraints { make in
|
downloadButton.snp.makeConstraints { make in
|
||||||
make.top.equalTo(hintLabel.snp.bottom).offset(20)
|
make.top.equalTo(hintLabel.snp.bottom).offset(20)
|
||||||
@ -160,3 +162,30 @@ final class TravelAlbumCodeDialogViewController: UIViewController {
|
|||||||
onDownload?()
|
onDownload?()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 为相册码提示文案提供与 Android 弹窗一致的内容留白。
|
||||||
|
private final class TravelAlbumCodeHintLabel: UILabel {
|
||||||
|
private let contentInsets: UIEdgeInsets
|
||||||
|
|
||||||
|
init(contentInsets: UIEdgeInsets) {
|
||||||
|
self.contentInsets = contentInsets
|
||||||
|
super.init(frame: .zero)
|
||||||
|
}
|
||||||
|
|
||||||
|
@available(*, unavailable)
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
override func drawText(in rect: CGRect) {
|
||||||
|
super.drawText(in: rect.inset(by: contentInsets))
|
||||||
|
}
|
||||||
|
|
||||||
|
override var intrinsicContentSize: CGSize {
|
||||||
|
let size = super.intrinsicContentSize
|
||||||
|
return CGSize(
|
||||||
|
width: size.width + contentInsets.left + contentInsets.right,
|
||||||
|
height: size.height + contentInsets.top + contentInsets.bottom
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -184,7 +184,8 @@ extension TravelAlbumEntryViewController: UITableViewDelegate {
|
|||||||
/// 新建相册任务蓝色入口卡片。
|
/// 新建相册任务蓝色入口卡片。
|
||||||
private final class TravelAlbumHeroCard: UIControl {
|
private final class TravelAlbumHeroCard: UIControl {
|
||||||
private let gradientLayer = CAGradientLayer()
|
private let gradientLayer = CAGradientLayer()
|
||||||
private let plusView = UIImageView(image: UIImage(systemName: "plus"))
|
private let plusView = UIView()
|
||||||
|
private let plusImageView = UIImageView(image: UIImage(systemName: "plus"))
|
||||||
private let titleLabel = UILabel()
|
private let titleLabel = UILabel()
|
||||||
private let subtitleLabel = UILabel()
|
private let subtitleLabel = UILabel()
|
||||||
private let arrowLabel = UILabel()
|
private let arrowLabel = UILabel()
|
||||||
@ -202,10 +203,11 @@ private final class TravelAlbumHeroCard: UIControl {
|
|||||||
gradientLayer.endPoint = CGPoint(x: 1, y: 0.5)
|
gradientLayer.endPoint = CGPoint(x: 1, y: 0.5)
|
||||||
layer.insertSublayer(gradientLayer, at: 0)
|
layer.insertSublayer(gradientLayer, at: 0)
|
||||||
|
|
||||||
plusView.tintColor = AppColor.primary
|
|
||||||
plusView.contentMode = .scaleAspectFit
|
|
||||||
plusView.backgroundColor = .white
|
plusView.backgroundColor = .white
|
||||||
plusView.layer.cornerRadius = 17
|
plusView.layer.cornerRadius = 17
|
||||||
|
plusView.clipsToBounds = true
|
||||||
|
plusImageView.tintColor = AppColor.primary
|
||||||
|
plusImageView.contentMode = .scaleAspectFit
|
||||||
|
|
||||||
titleLabel.text = "新建相册任务"
|
titleLabel.text = "新建相册任务"
|
||||||
titleLabel.font = .systemFont(ofSize: 19, weight: .medium)
|
titleLabel.font = .systemFont(ofSize: 19, weight: .medium)
|
||||||
@ -218,6 +220,7 @@ private final class TravelAlbumHeroCard: UIControl {
|
|||||||
arrowLabel.font = .systemFont(ofSize: 36, weight: .light)
|
arrowLabel.font = .systemFont(ofSize: 36, weight: .light)
|
||||||
|
|
||||||
addSubview(plusView)
|
addSubview(plusView)
|
||||||
|
plusView.addSubview(plusImageView)
|
||||||
addSubview(titleLabel)
|
addSubview(titleLabel)
|
||||||
addSubview(subtitleLabel)
|
addSubview(subtitleLabel)
|
||||||
addSubview(arrowLabel)
|
addSubview(arrowLabel)
|
||||||
@ -226,6 +229,10 @@ private final class TravelAlbumHeroCard: UIControl {
|
|||||||
make.centerY.equalToSuperview()
|
make.centerY.equalToSuperview()
|
||||||
make.size.equalTo(34)
|
make.size.equalTo(34)
|
||||||
}
|
}
|
||||||
|
plusImageView.snp.makeConstraints { make in
|
||||||
|
make.center.equalToSuperview()
|
||||||
|
make.size.equalTo(26)
|
||||||
|
}
|
||||||
titleLabel.snp.makeConstraints { make in
|
titleLabel.snp.makeConstraints { make in
|
||||||
make.top.equalToSuperview().offset(30)
|
make.top.equalToSuperview().offset(30)
|
||||||
make.leading.equalTo(plusView.snp.trailing).offset(16)
|
make.leading.equalTo(plusView.snp.trailing).offset(16)
|
||||||
|
|||||||
Reference in New Issue
Block a user