Swift表格视图单元
我正在尝试创建tableView单元格并自定义布局。但似乎我在我的细胞内添加的任何东西都会与细胞本身一样大小、高度和宽度。我怎样才能做到我可以随心所欲地设计我的细胞?i、 e,用边距和填充物使我的图像具有特定的大小。甚至我的文本高度也被拉伸到单元格高度。我添加了边框,这样就可以看到我的意思了。标签的高度应该正好是文本本身的大小,但它仍然在拉伸 我被tableview单元格困住了,想完全以编程方式设计单元格布局,而无需故事板。我一整天都在努力自学,只是一直在兜圈子Swift表格视图单元,swift,uitableview,tableview,cell,Swift,Uitableview,Tableview,Cell,我正在尝试创建tableView单元格并自定义布局。但似乎我在我的细胞内添加的任何东西都会与细胞本身一样大小、高度和宽度。我怎样才能做到我可以随心所欲地设计我的细胞?i、 e,用边距和填充物使我的图像具有特定的大小。甚至我的文本高度也被拉伸到单元格高度。我添加了边框,这样就可以看到我的意思了。标签的高度应该正好是文本本身的大小,但它仍然在拉伸 我被tableview单元格困住了,想完全以编程方式设计单元格布局,而无需故事板。我一整天都在努力自学,只是一直在兜圈子 import UIKit
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let tableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.tableView.delegate = self
self.tableView.dataSource = self
self.view.addSubview(self.tableView)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tableView.frame = view.bounds
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 8
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = "Here is some text"
cell.textLabel?.layer.cornerRadius = 10
cell.textLabel?.layer.borderWidth = 5
cell.textLabel?.layer.borderColor = UIColor.black.cgColor
cell.imageView?.image = UIImage(named: "spiderman")!
cell.imageView?.layer.cornerRadius = 10
cell.imageView?.layer.borderWidth = 5
cell.imageView?.layer.borderColor = UIColor.black.cgColor
return cell
}
}
这是因为您使用的是UITableViewCell的默认文本标签 如果打开故事板并使用“基本”样式的单元格,您将看到文本始终与中心对齐 我认为您不能直接调整这两个预定义属性(.textlab和.imageView)的高度或位置 尝试手动创建imageView和标签,不要直接使用cell.textLabel 例如:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let label = UITextView(frame: CGRect(x: 200, y: 0, width: 500, height: 50))
label.text = "Here is some text"
label.layer.cornerRadius = 10
label.layer.borderWidth = 5
label.layer.borderColor = UIColor.black.cgColor
cell.addSubview(label)
let image = UIImage(named: "spiderman")!
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
imageView.image = image
imageView.layer.cornerRadius = 10
imageView.layer.borderWidth = 5
imageView.layer.borderColor = UIColor.black.cgColor
cell.addSubview(imageView);
return cell
}
为此,请删除func tableView(u tableView:UITableView,heightForRowAt indexath:indexPath)->CGFloat{return 200}。来自代码。其设置为单元的静态高度。在故事板中为单元格组件提供高度。我的故事板中没有单元格。我都是通过编程实现的。这是唯一的办法吗?我没有接触过故事板。因此,当你通过编程设置单元格项目时,请提供它们的高度。这也不起作用,图像和txt仍然与单元格高度相同。即使我想更改txt或图像的位置,也不会发生任何移动,所以我知道如何理解你的意思。我尝试了你写的,这是一个进步。如果你看到故事板的来源,你会建议我改用故事板,还是完全可以编程。完全可以编程,如果你看到故事板的来源,他们正在以不同的格式做类似的事情。您仍然需要为这两个视图设置约束,以便它们可以在不同的屏幕大小下工作。在故事板中,您可以拖放并设置这些值。就我个人而言,我更喜欢在故事板中工作,但当多个开发人员在同一个故事板中工作并提出单独的请求时,很容易导致git冲突。好的,我将尝试故事板。菜鸟问题。如果我现在想在故事板中创建我的表视图,我如何使用我现在拥有的代码使其工作?或者我需要完全重建我的代码吗?2种方法,1是将UITableView作为视图添加到故事板中当前的UIViewController中,然后将其链接到tableView变量。~~~~另一种方法是在类和情节提要中替换UITableView。第二种方法需要很多更改,但您可以尝试、玩转并了解它的工作原理。最好查找有关如何创建新tableView的在线教程,因为您需要学习如何链接数据源和委托。