133 lines
4.0 KiB
Swift
133 lines
4.0 KiB
Swift
//
|
||
// FS_HomeCollectionViewCell.swift
|
||
// Funny_sounds
|
||
//
|
||
// Created by 忆海16 on 2024/8/15.
|
||
//
|
||
|
||
import UIKit
|
||
import SnapKit
|
||
import SDWebImage
|
||
|
||
class FS_HomeCollectionViewCell: UICollectionViewCell {
|
||
|
||
lazy var bgImageV:UIImageView = {
|
||
let bgImageV = UIImageView()
|
||
bgImageV.image = UIImage(named: "collectionBgV")
|
||
bgImageV.contentMode = .scaleToFill
|
||
|
||
return bgImageV
|
||
}()
|
||
|
||
lazy var conentImageV:UIImageView = {
|
||
let conentImageV = UIImageView()
|
||
conentImageV.image = UIImage(named: "collectionImageV")
|
||
conentImageV.contentMode = .scaleAspectFit
|
||
|
||
return conentImageV
|
||
}()
|
||
|
||
|
||
lazy var nameLabel: BorderedLabel = {
|
||
let nameLabel = BorderedLabel()
|
||
nameLabel.text = "Air Horn"
|
||
nameLabel.font = UIFont(name: "PaytoneOne-Regular", size: 20)
|
||
nameLabel.textColor = .white // 设置文本颜色为白色
|
||
nameLabel.numberOfLines = 0
|
||
nameLabel.textAlignment = .center
|
||
|
||
// 设置阴影效果
|
||
let shadow = NSShadow()
|
||
shadow.shadowColor = UIColor.black.withAlphaComponent(1.0) // 黑色阴影
|
||
shadow.shadowOffset = CGSize(width: 0, height: 6) // 向下偏移2个点
|
||
shadow.shadowBlurRadius = 0 // 无模糊度
|
||
|
||
// 设置属性字符串并应用阴影
|
||
let attributedText = NSMutableAttributedString(string: nameLabel.text!)
|
||
attributedText.addAttribute(.shadow, value: shadow, range: NSRange(location: 0, length: nameLabel.text!.count))
|
||
nameLabel.attributedText = attributedText
|
||
|
||
nameLabel.sizeToFit()
|
||
|
||
return nameLabel
|
||
}()
|
||
|
||
|
||
|
||
required init?(coder: NSCoder) {
|
||
fatalError("init(coder:) has not been implemented")
|
||
}
|
||
|
||
override init(frame: CGRect) {
|
||
super.init(frame: frame)
|
||
setUI()
|
||
|
||
contentView.backgroundColor = .clear
|
||
|
||
}
|
||
|
||
// MARK: -设置布局
|
||
func setUI(){
|
||
self.addSubview(bgImageV)
|
||
self.addSubview(conentImageV)
|
||
self.addSubview(nameLabel)
|
||
|
||
bgImageV.snp.makeConstraints { make in
|
||
make.width.height.equalToSuperview()
|
||
}
|
||
|
||
conentImageV.snp.makeConstraints { make in
|
||
make.top.equalToSuperview().offset(16)
|
||
// make.left.equalToSuperview().offset(7)
|
||
// make.right.equalToSuperview().offset(7)
|
||
make.centerX.equalTo(bgImageV)
|
||
make.height.equalTo(140)
|
||
}
|
||
|
||
nameLabel.snp.makeConstraints { make in
|
||
make.top.equalTo(conentImageV.snp.bottom).offset(4)
|
||
make.width.equalToSuperview()
|
||
// make.height.equalTo(23)
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
var model:SoundCategory?{
|
||
didSet{
|
||
if let imageURL = URL(string: model?.categoryUrl ?? "") {
|
||
// wpImagV.sd_setImage(with: imageURL, completed: nil)
|
||
conentImageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "collectionImageV"))
|
||
}
|
||
nameLabel.text = model?.categoryName
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
class BorderedLabel: UILabel {
|
||
override func drawText(in rect: CGRect) {
|
||
let context = UIGraphicsGetCurrentContext()
|
||
|
||
// 保存原始的文本颜色
|
||
let originalTextColor = self.textColor
|
||
|
||
// 设置描边颜色和宽度
|
||
context?.setLineWidth(3) // 描边宽度,这里可以调整宽度
|
||
context?.setLineJoin(.round) // 圆角样式的描边
|
||
context?.setTextDrawingMode(.stroke) // 设置文本绘制模式为描边
|
||
self.textColor = UIColor.black // 设置描边颜色为黑色
|
||
|
||
// 绘制描边
|
||
super.drawText(in: rect)
|
||
|
||
// 恢复文本颜色并绘制文本内容
|
||
context?.setTextDrawingMode(.fill) // 设置文本绘制模式为填充
|
||
self.textColor = originalTextColor // 恢复原始的文本颜色
|
||
|
||
super.drawText(in: rect)
|
||
}
|
||
}
|