答案 0 :(得分:8)
你可以在你的tableView单元格中尝试这个:
class cell: UITableViewCell{
override var frame: CGRect {
get {
return super.frame
}
set (newFrame) {
var frame = newFrame
frame.origin.y += 4
frame.size.height -= 2 * 5
super.frame = frame
}
}
}
答案 1 :(得分:4)
更新:UIEdgeInsetsInsetRect方法已被替换,现在您可以像这样
contentView.frame = contentView.frame.inset(by: margins)
快速4答案:
在您的自定义单元格类中添加此功能
override func layoutSubviews() {
super.layoutSubviews()
//set the values for top,left,bottom,right margins
let margins = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
contentView.frame = UIEdgeInsetsInsetRect(contentView.frame, margins)
}
您可以根据需要更改值
*****注意***** 调用超级功能
super.layoutSubviews()
非常重要,否则您会遇到奇怪的问题
答案 2 :(得分:2)
答案 3 :(得分:1)
一种简单的方法是集合视图而不是表视图,并将单元格间距提供给集合视图并使用
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
let widthSize = collectionView.frame.size.width / 1
return CGSize(width: widthSize-2, height: widthSize+20)
}
如果你只想要tableview然后添加背景视图作为容器视图并设置背景颜色白色和单元格背景颜色清晰颜色设置背景视图的单元格前导,颤音,底部到10
backgroundView.layer.cornerRadius = 2.0
backgroundView.layer.masksToBounds = false
backgroundView.layer.shadowColor = UIColor.black.withAlphaComponent(0.2).cgColor
答案 4 :(得分:1)
如果您使用UITableViewCell
来实现此类布局,则无法在UITableViewCells
之间提供间距。
您可以选择以下选项:
答案 5 :(得分:0)
请试一试。它对我来说很好。
您可以使用部分而不是行。
您在numberOfSectionsInTableView
方法中返回数组计数,并在numberOfRowsInSection
委托方法
在[array objectAtIndex:indexPath.section]
方法中使用cellForRowAtIndexPath
。
将heightForHeaderInSection
设置为40或根据您的要求。
谢谢,希望它会对你有所帮助
答案 6 :(得分:0)
- 静态设置UITableViewCell间距 - Swift 4 - 未经过全面测试。
将tableView行高设置为您喜欢的任何值。
override func viewDidLoad() {
super.viewDidLoad()
tableView.estimatedRowHeight = <Your preferred cell size>
tableView.rowHeight = UITableViewAutomaticDimension
// make sure to set your TableView delegates
tableView.dataSource = self
tableView.delegate = self
}
extension YourClass : UITexFieldDelegate, UITextFieldDataSource {
//Now set your cells.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "yourCell", for: indexPath) as! UITableViewCell
//to help see the spacing.
cell.backgroundColor = .red
cell.textLabel?.text = "Cell"
return cell
}
//display 3 cells
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
//now lets insert a headerView to create the spacing we want. (This will also work for viewForHeaderInSection)
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
//you can create your own custom view here
let view = UIView()
view.frame = CGRect(x: 0, y: 0, width: tableView.frame.width, height: 44) //size of a standard tableViewCell
//this will hide the headerView and match the tableView's background color.
view.backgroundColor = UIColor.clear
return view
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 44
}
}