我的应用目前正在加载this。正如您所看到的,这不是理想的b / c,细胞不会填满整个细胞。此外,如果您注意到每个单元格的最左侧,则白色分隔线在单元格结束之前停止。
我正在使用nib文件DayofWeekSpendingTableViewCell.xib
来自定义我的tableview单元格。
我有一个UITableViewController SummaryTableViewController
我加载了nib文件。在方法tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
中,我尝试设置两个标签的框架,以便它们占据视图的宽度,但这无助于我的应用程序仍然像this.那样加载
class SummaryTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
dayOfWeek = [ .Mon, .Tue, .Wed, .Thu, .Fri, .Sat, .Sun]
totalSpentPerDay = [0, 7.27, 0, 0, 39, 0, 0]
// Create a nib for reusing
let nib = UINib(nibName: "DayofWeekSpendingTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "nibCell")
self.tableView.separatorColor = UIColor.whiteColor()
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Configure the cell...
let cell = tableView.dequeueReusableCellWithIdentifier("nibCell", forIndexPath: indexPath) as! DayOfWeekTableViewCell
let day = dayOfWeek[indexPath.row]
let height = CGFloat(55)
let dayOfWeekWidth = CGFloat(80)
cell.dayOfWeek.text = day.rawValue.uppercaseString
cell.dayOfWeek.frame = CGRectMake(0, 0, dayOfWeekWidth, height)
cell.dayOfWeek.backgroundColor = colorOfDay[day]
cell.totalAmountSpent.text = "$\(totalSpentPerDay[indexPath.row])"
cell.totalAmountSpent.frame = CGRectMake(cell.dayOfWeek.frame.maxX + 1, 0, view.bounds.width - dayOfWeekWidth, height)
cell.totalAmountSpent.backgroundColor = colorOfDay[day]
return cell
}
}
如果有人能告诉我如何使自定义UITableViewCell nib文件适合视图,我将非常感激!
答案 0 :(得分:4)
所以,我看到了几件事。首先,看起来您的单元格笔尖可能会使用一些AutoLayout约束。你的笔尖可能是320px的宽度。在运行时,您的单元格的内容视图实际上是向外扩展以填充较大设备的新宽度,但您放置的绿色视图只是保持其320px配置。您可以通过更改内容视图的颜色并在模拟器中看到该颜色来测试它。我在这里重现你的细胞:
粉红色视图具有固定宽度,并且放置在内容视图的顶部,左侧和底部。蓝色视图是粉红色视图右侧的4个点,在中间给出了白色边缘。它放在内容视图的顶部,右侧和底部。因此,当单元格的内容视图调整大小时,AutoLayout约束将拉伸蓝色视图,使其右边缘与内容视图的右边缘保持齐平。
对于边缘插入,首先在每个单元格上的表和上设置边缘插入。您可以在storyboard / nib中执行此操作,或者在代码中执行此操作:
class ViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
let nib = UINib(nibName: "yubnub", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "yub")
tableView.separatorInset = UIEdgeInsets.zero
tableView.layoutMargins = UIEdgeInsets.zero
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return tableView.dequeueReusableCellWithIdentifier("yub", forIndexPath: indexPath)
}
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
cell.layoutMargins = UIEdgeInsets.zero
}
}
答案 1 :(得分:4)
应用以下解决方案,
1)首先从故事板中的尺寸检查器为您的tableview提供完全自动调整约束。
2)现在转到你的nib文件并选择tableViewcell并给它完全限制。
3)现在选择左侧标签并将其左侧和左侧对它的约束,并给右侧标签赋予正确的,向上和中间的约束。
现在不要忘记在视图控制器中实现heightForRowatIndexPath委托方法,并提及自定义xib中nib文件的相同高度。
答案 2 :(得分:0)
我有同样的错误,因为在故事板中我的tableView的内容是静态单元格。我将其更改为Dynamic Prototype并解决了问题。