UITableViewCell最初格式不正确

时间:2016-10-09 19:13:50

标签: ios swift uitableview

我有一个自定义UITableViewCell,它曾经工作正常,但我升级到xcode 8,我仍然使用Swift 2.3,只是刚开始注意到这个问题,所以我不是100确定何时开始发生。

我正在配置一个单元格,它所做的只是制作一个标签圆形并在其中放置一个数字,旁边有一个名称。它应该是这样的:

enter image description here

但是,当屏幕最初加载时,缺少圆形标签。如果我向下滚动tableView但行离开屏幕,当我向后滚动并再次聚焦时,标签出现。与附件相同,如果我单击编辑行然后返回圆形标签生成。为什么它不适用于初始加载?

以下是UITableViewCell的自定义代码:

func circleLabels(label: UILabel, hex: String){
    label.layer.cornerRadius = label.frame.size.width / 2
    label.layer.masksToBounds = true
}

func configureForPlayer(player: Player) {
    playerName.text = player.name
    jerseyLabel.text = String(player.jersey)
    circleLabels(jerseyLabel, hex: "#6470FF")
}

的cellForRowAtIndexPath

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("PlayerCell", forIndexPath: indexPath) as! PlayerCell
    let player = fetchedResultsController.objectAtIndexPath(indexPath) as! Player
    cell.configureForPlayer(player)
    return cell
}

1 个答案:

答案 0 :(得分:1)

我的猜测是,第一次调用Random rnd = new Random(); var otp = string.Concat(Enumerable.Range(0, s.Length) .Select(i => (char)(rnd.Next(26) + 'A'))); 时尚未设置label.frame。一旦绘制完成并且circleLabels具有实际大小,代码就会按预期开始工作。如果我正确地使用常量而不是label.frame应该解决问题。