2026-01-27 15:55:28 +08:00

583 lines
17 KiB
Swift

import Foundation
import UIKit
import SnapKit
import YYCategories
class GHRecordParserView: UIView {
var likePadding: Float? = 0.0
var default_p: Double? = 0.0
private var layoutGrid_str: String!
var contentHeight: CGFloat {
return self.scrollView.contentSize.height
}
var didChangeHeight: (() -> Void)?
var model: JXRecommend? {
didSet {
coverInfoView.model = model
let des = model?.nr_description ?? ""
let totalLineNum = des.numberOfLines(self.desLabel.font, .init(width: UIScreen.width - 32, height: .greatestFiniteMagnitude))
if Int(totalLineNum) > self.desTotalLineNum {
desMoreButton.isHidden = false
desMoreButton.isSelected = false
desLabel.numberOfLines = self.desTotalLineNum
} else {
desMoreButton.isHidden = true
}
desLabel.text = des
contentsTextLabel.text = "moduleVeloria".localizedReplace(text: "\(model?.episode_total ?? 0)")
collectDataView.num = CGFloat(model?.collect_total ?? 0)
heatsDataView.num = CGFloat(model?.heats ?? 0)
wordDataView.num = CGFloat(model?.words ?? 0)
rateDataView.num = model?.rate ?? 0
}
}
private let desTotalLineNum = 7
private let lineColor: UIColor = .F_2_EFEE
private lazy var scrollView: VIGuyanView = {
let scrollView = VIGuyanView()
scrollView.showsVerticalScrollIndicator = false
scrollView.isScrollEnabled = false
scrollView.addObserver(self, forKeyPath: "contentSize", context: nil)
return scrollView
}()
private lazy var contentView: UIView = {
let view = UIView()
view.backgroundColor = .white
view.nr_setRoundedCorner(topLeft: 16, topRight: 16, bottomLeft: 0, bottomRight: 0)
return view
}()
private lazy var coverInfoView: ISpacingView = {
let view = ISpacingView()
return view
}()
private lazy var collectDataView: WCoverParserView = {
let view = WCoverParserView()
view.num = 0
view.icon = UIImage(named: "verifyMireoGradient")
view.title = "contentElarisButton".localized
return view
}()
private lazy var heatsDataView: WCoverParserView = {
let view = WCoverParserView()
view.num = 0
view.icon = UIImage(named: "moduleScreen")
view.title = "recommendRegister_vmDelegate_t".localized
return view
}()
private lazy var wordDataView: WCoverParserView = {
let view = WCoverParserView()
view.num = 0
view.icon = UIImage(named: "coverJinmo")
view.title = "category_63Today".localized
return view
}()
private lazy var rateDataView: WCoverParserView = {
let view = WCoverParserView()
view.num = 0
view.icon = UIImage(named: "homeAble")
view.title = "genresReceive".localized
return view
}()
private lazy var dataLineView1: UIView = {
let view = UIView()
view.backgroundColor = self.lineColor
return view
}()
private lazy var dataLineView2: UIView = {
let view = UIView()
view.backgroundColor = self.lineColor
return view
}()
private lazy var dataLineView3: UIView = {
let view = UIView()
view.backgroundColor = self.lineColor
return view
}()
private lazy var lineView1: UIView = {
let view = UIView()
view.backgroundColor = self.lineColor
return view
}()
private lazy var desTitleLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 16, weight: .semibold)
label.textColor = .black
label.text = "vionConfirmFire".localized
return label
}()
private lazy var desMoreButton: UIButton = {
let button = UIButton(type: .custom, primaryAction: UIAction(handler: { [weak self] _ in
guard let self = self else { return }
self.desMoreButton.isSelected = !self.desMoreButton.isSelected
if self.desMoreButton.isSelected {
self.desLabel.numberOfLines = 0
} else {
self.desLabel.numberOfLines = desTotalLineNum
}
}))
button.isHidden = true
button.setImage(UIImage(named: "contentAtegory"), for: .normal)
button.setImage(UIImage(named: "screenCheck"), for: .selected)
button.setImage(UIImage(named: "screenCheck"), for: [.selected, .highlighted])
return button
}()
private lazy var desLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 12, weight: .regular)
label.textColor = .black.withAlphaComponent(0.5)
label.numberOfLines = desTotalLineNum
return label
}()
private lazy var lineView2: UIView = {
let view = UIView()
view.backgroundColor = self.lineColor
return view
}()
private lazy var contentsContainerView = UIView()
private lazy var contentsTitleLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 16, weight: .semibold)
label.textColor = .black
label.text = "reader_book_contents"
return label
}()
private lazy var contentsTextLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 12, weight: .regular)
label.textColor = .black.withAlphaComponent(0.5)
return label
}()
private lazy var contentsMoreButton: UIButton = {
var configuration = UIButton.Configuration.plain()
configuration.contentInsets = .zero
configuration.image = UIImage(named: "ableFddebcdbeeffcebdfCover")
configuration.imagePadding = 0
configuration.imagePlacement = .trailing
configuration.attributedTitle = AttributedString("loginEwardSetting".localized, attributes: AttributeContainer([
.font : UIFont.font(ofSize: 12, weight: .regular),
.foregroundColor : UIColor.black.withAlphaComponent(0.5)
]))
let button = UIButton(configuration: configuration, primaryAction: UIAction(handler: { [weak self] _ in
guard let self = self else { return }
let vc = YStarReadController()
vc.novelModel = self.model
self.viewController?.navigationController?.pushViewController(vc, animated: true)
}))
return button
}()
private lazy var lineView3: UIView = {
let view = UIView()
view.backgroundColor = self.lineColor
return view
}()
deinit {
scrollView.removeObserver(self, forKeyPath: "contentSize")
}
override init(frame: CGRect) {
super.init(frame: frame)
saveResultResignDateHeightFinite()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@discardableResult
func postAboutDropBottomMonth(loadingLert: [Any]!, barRecommend: [String: Any]!) -> Float {
var arra: Bool = true
var genresx: Int = 5
withUnsafeMutablePointer(to: &genresx) { pointer in
_ = pointer.pointee
}
var elyonH: Float = 5.0
_ = elyonH
genresx *= (genresx * (arra ? 3 : 3))
var minimumH: Float = 3.0
_ = minimumH
var ategoryl: Double = 2.0
var msgC: Float = 5.0
var colorT: String! = "init_f_48"
var reachabley: String! = "clut_z_66"
withUnsafeMutablePointer(to: &reachabley) { pointer in
_ = pointer.pointee
}
repeat {
msgC *= Float(colorT.count >> (Swift.min(labs(2), 3)))
if 303418.0 == msgC {
break
}
} while (303418.0 == msgC) && (5.18 == (Double(Double(2) * ategoryl)))
if 4 == colorT.count {
colorT.append("\((Int(minimumH > 350087490.0 || minimumH < -350087490.0 ? 77.0 : minimumH)))")
}
reachabley = "\((Int(ategoryl > 142223410.0 || ategoryl < -142223410.0 ? 78.0 : ategoryl)))"
for _ in 0 ..< 2 {
reachabley = "\(1)"
}
arra = 2.81 >= elyonH && 67 >= genresx
while ((2 * genresx) == 3 && (3.63 * elyonH) == 2.36) {
genresx -= (Int(elyonH > 10159026.0 || elyonH < -10159026.0 ? 29.0 : elyonH))
break
}
elyonH *= (Float(genresx | Int(elyonH > 164016574.0 || elyonH < -164016574.0 ? 2.0 : elyonH)))
for _ in 0 ..< 2 {
elyonH -= (Float(Int(elyonH > 302666718.0 || elyonH < -302666718.0 ? 81.0 : elyonH) + 2))
}
return elyonH
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
let passphraseHeadphone: Float = postAboutDropBottomMonth(loadingLert:[611, 370], barRecommend:["summed_1_69":229, "x_47_underlying":856])
print(passphraseHeadphone)
var _o_45 = Int(passphraseHeadphone)
switch _o_45 {
case 87:
_o_45 *= 15
break
case 72:
var p_85: Int = 0
let g_25 = 1
if _o_45 > g_25 {
_o_45 = g_25
}
if _o_45 <= 0 {
_o_45 = 1
}
for o_3 in 0 ..< _o_45 {
p_85 += o_3
var j_4 = p_85
break
}
break
case 17:
_o_45 /= 70
break
case 51:
var e_85 = 1
let h_43 = 1
if _o_45 > h_43 {
_o_45 = h_43
}
while e_85 < _o_45 {
e_85 += 1
var m_13 = e_85
break
}
break
case 22:
_o_45 += 54
_o_45 *= 45
break
case 38:
_o_45 *= 41
var s_40 = 1
let h_2 = 1
if _o_45 > h_2 {
_o_45 = h_2
}
while s_40 < _o_45 {
s_40 += 1
_o_45 /= s_40
var r_88 = s_40
if r_88 != 338 {
r_88 += 64
}
break
}
break
case 40:
var f_10 = 1
let s_25 = 0
if _o_45 > s_25 {
_o_45 = s_25
}
while f_10 < _o_45 {
f_10 += 1
_o_45 /= f_10
_o_45 -= 78
break
}
break
case 75:
_o_45 -= 65
if _o_45 < 170 {
_o_45 -= 17
}
break
default:()
}
_ = passphraseHeadphone
if keyPath == "contentSize" {
self.didChangeHeight?()
}
}
}
extension GHRecordParserView {
@discardableResult
func resetOutletCommonCode(detailArrivals: Float, navName: Float, short_saMonitor: Int) -> [String: Any]! {
var pageA: Int = 2
var avatorD: Float = 0.0
withUnsafeMutablePointer(to: &avatorD) { pointer in
}
var brief4: [String: Any]! = ["lua":"tempfile_m_0", "suiteb_g_93":"networks_3_38"]
withUnsafeMutablePointer(to: &brief4) { pointer in
_ = pointer.pointee
}
brief4["\(pageA)"] = 1 ^ pageA
for _ in 0 ..< 1 {
avatorD += Float(pageA)
}
var safeo: Bool = true
while (5.16 <= (Double(Float(pageA) * avatorD))) {
pageA <<= Swift.min(1, brief4.count)
break
}
if 3.41 <= (Double(Float(pageA) * avatorD)) {
pageA %= Swift.max(2, 1)
}
safeo = (((!safeo ? 68 : brief4.keys.count) ^ brief4.keys.count) <= 68)
return brief4
}
private func saveResultResignDateHeightFinite() {
let playbackTool: [String: Any]! = resetOutletCommonCode(detailArrivals:3484.0, navName:3533.0, short_saMonitor:9802)
playbackTool.forEach({ (key, value) in
print(key)
print(value)
})
var playbackTool_len = playbackTool.count
var _r_17 = Int(playbackTool_len)
var o_98 = 1
let x_94 = 1
if _r_17 > x_94 {
_r_17 = x_94
}
while o_98 < _r_17 {
o_98 += 1
_r_17 /= o_98
var v_62 = o_98
var c_5 = 1
let o_90 = 0
if v_62 > o_90 {
v_62 = o_90
}
while c_5 < v_62 {
c_5 += 1
v_62 /= c_5
break
}
break
}
_ = playbackTool
addSubview(scrollView)
scrollView.addSubview(coverInfoView)
scrollView.addSubview(contentView)
contentView.addSubview(collectDataView)
contentView.addSubview(heatsDataView)
contentView.addSubview(wordDataView)
contentView.addSubview(rateDataView)
contentView.addSubview(dataLineView1)
contentView.addSubview(dataLineView2)
contentView.addSubview(dataLineView3)
contentView.addSubview(lineView1)
contentView.addSubview(desTitleLabel)
contentView.addSubview(desMoreButton)
contentView.addSubview(desLabel)
contentView.addSubview(lineView2)
contentView.addSubview(contentsContainerView)
contentsContainerView.addSubview(contentsTitleLabel)
contentsContainerView.addSubview(contentsTextLabel)
contentsContainerView.addSubview(contentsMoreButton)
contentView.addSubview(lineView3)
scrollView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
coverInfoView.snp.makeConstraints { make in
make.left.centerX.equalToSuperview()
make.top.equalToSuperview().offset(UIScreen.navBarHeight)
make.height.equalTo(240)
}
contentView.snp.makeConstraints { make in
make.left.centerX.equalToSuperview()
make.top.equalTo(coverInfoView.snp.bottom)
make.bottom.equalToSuperview()
}
collectDataView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.top.equalToSuperview().offset(16)
make.height.equalTo(50)
}
heatsDataView.snp.makeConstraints { make in
make.width.height.centerY.equalTo(collectDataView)
make.left.equalTo(collectDataView.snp.right)
}
wordDataView.snp.makeConstraints { make in
make.width.height.centerY.equalTo(collectDataView)
make.left.equalTo(heatsDataView.snp.right)
}
rateDataView.snp.makeConstraints { make in
make.width.height.centerY.equalTo(wordDataView)
make.left.equalTo(wordDataView.snp.right)
make.right.equalToSuperview().offset(-16)
}
dataLineView1.snp.makeConstraints { make in
make.width.equalTo(1)
make.height.equalTo(40)
make.centerY.equalTo(collectDataView)
make.centerX.equalTo(collectDataView.snp.right)
}
dataLineView2.snp.makeConstraints { make in
make.width.height.centerY.equalTo(dataLineView1)
make.centerX.equalTo(heatsDataView.snp.right)
}
dataLineView3.snp.makeConstraints { make in
make.width.height.centerY.equalTo(dataLineView1)
make.centerX.equalTo(wordDataView.snp.right)
}
lineView1.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.centerX.equalToSuperview()
make.top.equalTo(collectDataView.snp.bottom).offset(17)
make.height.equalTo(1)
}
desTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.centerY.equalTo(desMoreButton)
}
desMoreButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-6)
make.top.equalTo(lineView1.snp.bottom).offset(2)
make.width.height.equalTo(44)
}
desLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.right.lessThanOrEqualToSuperview().offset(-16)
make.top.equalTo(lineView1.snp.bottom).offset(48)
}
lineView2.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.centerX.equalToSuperview()
make.top.equalTo(desLabel.snp.bottom).offset(12)
make.height.equalTo(1)
}
contentsContainerView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.centerX.equalToSuperview()
make.top.equalTo(lineView2.snp.bottom)
make.height.equalTo(48)
}
contentsTitleLabel.snp.makeConstraints { make in
make.left.equalToSuperview()
make.centerY.equalToSuperview()
}
contentsTextLabel.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.left.equalTo(contentsTitleLabel.snp.right).offset(12)
}
contentsMoreButton.snp.makeConstraints { make in
make.right.equalToSuperview()
make.top.bottom.equalToSuperview()
}
lineView3.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.centerX.equalToSuperview()
make.top.equalTo(contentsContainerView.snp.bottom)
make.height.equalTo(1)
make.bottom.equalToSuperview()
}
}
}