gpt4 book ai didi

ios - Spritekit - Tableview 滚动中断

转载 作者:行者123 更新时间:2023-11-28 06:21:34 24 4
gpt4 key购买 nike

我目前正在我的 sprite kit 游戏中开发一个菜单屏幕来显示所有项目,我使用了一个 tableview 来实现这一点,因为它允许我有一个用于项目描述的 uilabel。我的 uitableview 的子类如下:

UITableview 类

import Foundation
import SpriteKit
import UIKit

class GameRoomTableView: UITableView,UITableViewDelegate,UITableViewDataSource {

var items: [String] = []
var descrip: [String] = []
var title: [String] = []

var isFirstViewAlreadyAdded = false
var isSecondViewAlreadyAdded = false

override init(frame: CGRect, style: UITableViewStyle) {
super.init(frame: frame, style: style)
self.delegate = self
self.dataSource = self
coreDataItemRetrieveval()
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

// MARK: - Table view data source
func numberOfSections(in tableView: UITableView) -> Int {

return items.count
}

func coreDataItemRetrieveval() {

items.removeAll(); descrip.removeAll(); title.removeAll()

items.append("Player1")
descrip.append("Grown on Astrums Home world of Zaharia the forbidden fruit when eaten results in a headstart for the player")
title.append("Athia Fruit")

items.append("Player2")
descrip.append("HHHHHH HHHHHH HHHHHHHHHH HHHHHHH HHHHHHHH HHHHHHHH HHHHHHHHH HHHHHHHHH ")
title.append("AtTTTTTTT")

items.append("Player2")
descrip.append("TESTING ")
title.append("AtTTTTTTT")

items.append("Player2")
descrip.append("TESTING ")
title.append("AtTTTTTTT")

items.append("Player2")
descrip.append("TESTING ")
title.append("AtTTTTTTT")

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

tableView.allowsSelection = false
tableView.showsVerticalScrollIndicator = false
tableView.backgroundColor = .clear
tableView.backgroundView = nil

return 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let CellIdentifier: String = "Cell"
var cell: UITableViewCell? = tableView.dequeueReusableCell(withIdentifier: CellIdentifier)

if cell == nil {

cell = UITableViewCell(style: .default, reuseIdentifier: nil)

//IMPLEMENT CORE DATA RETRIEVEAL AND SO ON TO MAKE IT BETTER USE APPEND ARRAYS AND SO ON TO GET THIS DONE AND IMPLEMENT QUANTITY LABEL.

cell?.imageView?.image = UIImage(named:(self.items[indexPath.section] + ".png"))
cell?.imageView?.transform = CGAffineTransform(scaleX: 0.5, y: 0.5);

cell?.textLabel?.text = self.descrip[indexPath.section]
cell?.textLabel?.numberOfLines = 0
cell?.textLabel?.adjustsFontSizeToFitWidth = true
cell?.textLabel?.frame = CGRect(x: (cell?.frame.size.width)! / 2.6, y: (cell?.frame.size.height)! / 1.7, width: 150, height: 50)

let textlabel2 = UILabel(frame: CGRect(x: (cell?.frame.size.width)! / 2.6, y: (cell?.frame.size.height)! / 1.4, width: 150, height: 50))
textlabel2.text = self.title[indexPath.section]
textlabel2.numberOfLines = 0
textlabel2.adjustsFontSizeToFitWidth = true
cell?.contentView.addSubview(textlabel2)

}

return cell!
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200.00
}

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){

view.tintColor = UIColor.clear
let header = view as! UITableViewHeaderFooterView
header.textLabel?.textColor = UIColor.white
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return " "
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("You selected cell #\(indexPath.row)!")
}

}

游戏场景:

class GameScene: SKScene {

var gameTableView = GameRoomTableView()
private var label : SKLabelNode?

override func didMove(to view: SKView) {

gameTableView.frame = CGRect(x:14,y:100, width: frame.maxX / 1.08, height: frame.maxY) //(scene?.view?.frame.maxY)!)
gameTableView.contentSize = CGSize(width: gameTableView.frame.size.width, height: gameTableView.frame.size.height)

self.scene?.view?.addSubview(gameTableView)
gameTableView.reloadData()

}
}

我遇到的唯一问题是当我滚动到 tableview 的底部时似乎最后一个单元格的一半被滚动到并且我无法完全看到它 tableview 有多个部分因为我想要间隙在每个细胞之间,这是我实现它的唯一方法。如何将 tableview 的滚动更改为更长的时间,以便我可以完整地看到所有单元格?我试过在这里查看其他答案,但我没有运气修复它。

最佳答案

您的问题在行中:

override func didMove(to view: SKView) {
gameTableView.frame = CGRect(x:14,y:100, width: frame.maxX / 1.08, height: frame.maxY)
...

发生这种情况是因为您的 gameTableView 高度大于场景高度:

enter image description here

要解决这个问题,您可以尝试降低 table 的高度,例如:

gameTableView.frame = CGRect(x:14,y:100, width: frame.maxX / 1.08, height: frame.maxY/2)

关于ios - Spritekit - Tableview 滚动中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43303533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com