我有一个自定义UITableViewCell
,它曾经工作正常,但我升级到xcode 8,我仍然使用Swift 2.3,只是刚开始注意到这个问题,所以我不是100确定何时开始发生。
我正在配置一个单元格,它所做的只是制作一个标签圆形并在其中放置一个数字,旁边有一个名称。它应该是这样的:
但是,当屏幕最初加载时,缺少圆形标签。如果我向下滚动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
}
答案 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
应该解决问题。