我使用以下属性制作了自定义UITableViewCell:
cityNameLabel = UILabel(frame: CGRect(x: 20, y: 0, width: self.frame.width/2, height: self.frame.height))
degreeLabel = UILabel(frame: CGRect(x: self.frame.width - 50, y: 0, width: 50, height: self.frame.height))
degreeLabel.textAlignment = .left
degreeLabel.text = "12C"
contentView.layer.addSublayer(setupGradient())
contentView.addSubview(cityNameLabel)
contentView.addSubview(degreeLabel)
我将单元格出列,注册它,并在我的UIViewController的tableviewcontroller中设置框架,如下所示:
tableView = UITableView(frame: CGRect(x: 0, y: 60, width: view.frame.width, height: 200))
tableView.backgroundColor = UIColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 0.3)
tableView.layer.cornerRadius = 3
tableView.tableFooterView = UIView()
tableView.delegate = self
tableView.rowHeight = 60
tableView.dataSource = self
tableView.separatorStyle = .none
tableView.register(SettingsCityTableViewCell.self, forCellReuseIdentifier: reuse)
然后按如下方式设置:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: reuse, for: indexPath) as? SettingsCityTableViewCell {
cell.cityNameLabel.text = cityList.list[indexPath.row].name
return cell
}
else {
return UITableViewCell()
}
}
但是,UITableViewCell不会填充整个UITableView的框架。像这样:
(单元格不适合tableview ...)
编辑: 我也想以编程方式解决这个问题,因为我并没有真正使用故事板来编写Swift。谢谢!