您的位置:首页 > 财经 > 产业 > 顺营销官方网站_的的平台服务电话_网络推广的平台有哪些_上海网站建设制作

顺营销官方网站_的的平台服务电话_网络推广的平台有哪些_上海网站建设制作

2025/3/11 0:07:21 来源:https://blog.csdn.net/Unlimited_ci/article/details/146081717  浏览:    关键词:顺营销官方网站_的的平台服务电话_网络推广的平台有哪些_上海网站建设制作
顺营销官方网站_的的平台服务电话_网络推广的平台有哪些_上海网站建设制作

SheetInfoCell代码中,执行iconView.show(info.picurl) 时,若采用kf.indicatorType = .activity,则会产生ui页面混乱,如果不使用这个加载动画,则不会产生。
与此同时,对于发现页面,是否使用加载动画,则都不会产生ui混乱。
对于SheetInfoCell ,产生bug的具体表现为,BaseTableViewCell 中创建的container 的高度 在设置其高度自适应并且重写了自动计算高度的情况下,大于其父视图contentView。
父视图contentView的高度始终为 44 。

//
//  SheetInfoCell.swift
//  myMusic
//  歌单详情 歌单信息cell
//  Created by Unlimited_z on 2025/3/4.
//import UIKit
import TangramKitclass SheetInfoCell: BaseTableViewCell {static let NAME = "SheetInfoCell"var iconView:UIImageView!override func initViews() {super.initViews()container.tg_padding = UIEdgeInsets(top: PADDING_OUTER, left: PADDING_OUTER, bottom: PADDING_LARGE2, right: PADDING_OUTER)container.tg_space = PADDING_LARGE2container.tg_height.equal(300)container.backgroundColor = .clear//水平容器let orientationContainer = ViewFactoryUtil.orientationContainer()orientationContainer.tg_space = PADDING_OUTERorientationContainer.tg_gravity = TGGravity.vert.centerorientationContainer.tg_padding = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: PADDING_SMALL)container.addSubview(orientationContainer)//图标iconView = UIImageView()iconView.tg_width.equal(120)iconView.tg_height.equal(120)iconView.clipsToBounds = trueiconView.image = R.image.placeholder()iconView.smallCorner()iconView.contentMode = .scaleAspectFillorientationContainer.addSubview(iconView)//右侧容器let rightContainer = TGLinearLayout(.vert)rightContainer.tg_width.equal(.fill)rightContainer.tg_height.equal(.wrap)rightContainer.tg_space = PADDING_SMALLorientationContainer.addSubview(rightContainer)//标题rightContainer.addSubview(self.titleView)//用户容器let userContainer = ViewFactoryUtil.orientationContainer()userContainer.tg_space = PADDING_SMALLuserContainer.tg_gravity = TGGravity.vert.centerrightContainer.addSubview(userContainer)userContainer.addSubview(self.avatarView)userContainer.addSubview(self.nicknameView)//详情容器let detailContainer = ViewFactoryUtil.orientationContainer()//类似paddingTopdetailContainer.tg_top.equal(PADDING_MEDDLE)detailContainer.tg_space = PADDING_SMALLuserContainer.tg_gravity = TGGravity.vert.centerrightContainer.addSubview(detailContainer)detailContainer.addSubview(self.detailView)detailContainer.addSubview(ViewFactoryUtil.moreIconView())//快捷按钮容器let buttonContainer = ViewFactoryUtil.orientationContainer()buttonContainer.corner(23)buttonContainer.tg_horzMargin(PADDING_LARGE2)buttonContainer.tg_height.equal(46)container.addSubview(buttonContainer)buttonContainer.addSubview(self.collectCountView)buttonContainer.addSubview(ViewFactoryUtil.smallVerticalDivider())buttonContainer.addSubview(self.commentCountView)buttonContainer.addSubview(ViewFactoryUtil.smallVerticalDivider())buttonContainer.addSubview(self.shareCountView)}func bind(_ data: PlaylistInfo) {let info = dataiconView.show(info.picurl)titleView.text = info.title// 创建者信息if let creator = info.creator {
//                avatarView.show(creator.headurl)nicknameView.text = creator.nick}detailView.text = info.desc// 由于 MusicResponse 没有这些计数,可以显示歌曲数量collectCountView.setTitle("\(info.songnum)", for: .normal)commentCountView.setTitle("0", for: .normal)  // 或者隐藏}override func getContainerOrientation() -> TGOrientation {return .vert}lazy var titleView: UILabel = {let r = UILabel()r.tg_width.equal(.fill)r.tg_height.equal(.wrap)r.numberOfLines = 2r.font = UIFont.systemFont(ofSize: TEXT_LARGE2)r.textColor = .whitereturn r}()lazy var avatarView: UIImageView = {let r = UIImageView()r.tg_width.equal(30)r.tg_height.equal(30)r.contentMode = .scaleAspectFillr.smallCorner()return r}()lazy var nicknameView: UILabel = {let r = UILabel()r.tg_width.equal(.wrap)r.tg_height.equal(.wrap)r.numberOfLines = 1r.font = UIFont.systemFont(ofSize: TEXT_MEDDLE)r.textColor = .whitereturn r}()lazy var detailView: UILabel = {let r = UILabel()r.tg_width.equal(160)r.tg_height.equal(.wrap)r.numberOfLines = 1r.font = UIFont.systemFont(ofSize: TEXT_MEDDLE)r.textColor = .whitereturn r}()lazy var collectCountView: QMUIButton = {let r = ViewFactoryUtil.secoundButton(icon: R.image.search()!, title: "0")r.backgroundColor = .whitereturn r}()lazy var commentCountView: QMUIButton = {let r = ViewFactoryUtil.secoundButton(icon: R.image.search()!, title: "0")r.backgroundColor = .whitereturn r}()lazy var shareCountView: QMUIButton = {let r = ViewFactoryUtil.secoundButton(icon: R.image.search()!, title: "0")r.backgroundColor = .whitereturn r}()}
//
//  File.swift
//  myMusic
//  Kingfisher显示图片扩展
//  Created by Unlimited_z on 2025/3/5.
//import UIKit//图片加载
import Kingfisherextension UIImageView{/// 显示头像/// - Parameter data: <#data description#>func showAvatar(_ data:String?) {show(data, "DefaultAvatar")}/// 显示网络图片/// - Parameters:///   - view: <#view description#>///   - data: <#data description#>///   - defaultRes: <#defaultRes description#>func show(_ data:String?,_ defaultImage:String="Placeholder") {if SuperStringUtil.isBlank(data) {//空//显示默认图片image = UIImage(named: defaultImage)} else {var newData:String!if data!.starts(with: "http") {newData = data} else {newData = data?.absoluteUri()}showFull(newData)}}/// 显示绝对路径/// - Parameter data: <#data description#>func showFull(_ data: String) {
//        kf.indicatorType = .activitykf.setImage(with: URL(string: data))}/// 显示本地图片/// - Parameters:///   - view: <#view description#>///   - data: <#data description#>///   - defaultRes: <#defaultRes description#>func showLocal(_ data: String?, _ defaultImage: String = "Placeholder") {if (SuperStringUtil.isBlank(data)) {//空//显示默认图片self.image = UIImage(named: defaultImage)} else {kf.indicatorType = .activitylet url = URL(fileURLWithPath: data!)let provider = LocalFileImageDataProvider(fileURL: url)kf.setImage(with: provider)}}
}
//
//  BaseTableViewCell.swift
//  myMusic
// 简化自定义单元格的开发流程
//  Created by Unlimited_z on 2025/2/17.
//import UIKit//提供类似Android中更高层级布局框架
import TangramKitclass BaseTableViewCell: UITableViewCell {//对于需要动态评估高度的UITableViewCell来说可以把布局视图暴露出来。用于高度评估和边界线处理。以及事件处理的设置。var container:TGBaseLayout!override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {super.init(style: style, reuseIdentifier: reuseIdentifier)innerInit()}required init?(coder: NSCoder) {super.init(coder: coder)innerInit()}func innerInit() {initViews()initDatum()initListeners()}/// 找控件func initViews() {//背景透明backgroundColor = .clearcontentView.backgroundColor = .clear//去掉默认的选中颜色selectionStyle = .none//根容器container = TGLinearLayout(getContainerOrientation())container.tg_width.equal(.fill)container.tg_height.equal(.wrap)container.tg_space = PADDING_MEDDLEcontentView.addSubview(container)}/// 设置数据func initDatum() {}/// 设置监听器func initListeners()  {}/// 获取根容器布局方向func getContainerOrientation() -> TGOrientation {return .horz}/// 使用TangramKit后,让item自动计算高度,要重写该方法/// - Parameters:///   - targetSize: <#targetSize description#>///   - horizontalFittingPriority: <#horizontalFittingPriority description#>///   - verticalFittingPriority: <#verticalFittingPriority description#>/// - Returns: <#description#>override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {//        let size = container.systemLayoutSizeFitting(targetSize)
//        print("Calculated size: \(size)") // 方便调试return self.container.systemLayoutSizeFitting(targetSize)}
}

在这里插入图片描述
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com