Ich habe eine benutzerdefinierte UITableViewCell
und es funktioniert gut, aber ich habe auf xcode 8 aktualisiert und ich bin immer noch mit Swift 2.3 und nur gerade anfing, dieses Problem zu bemerken, so dass ich ' Ich bin nicht 100% sicher, wann es zu geschehen begann.UITableViewCell formatiert nicht richtig anfänglich
Ich konfiguriere eine Zelle und alles, was sie tut, ist ein kreisförmiges Etikett zu machen und eine Zahl darin zu setzen, mit einem Namen daneben. Es sollte wie folgt aussehen:
jedoch, wenn der Bildschirm zunächst Lasten, die kreisförmige Etikett fehlt. Wenn ich jedoch die tableView nach unten scrolle und die Zeile den Bildschirm verlässt, wenn ich zurückscrolle und es wieder scharf wird, erscheint die Beschriftung. Das selbe mit dem Zubehör, wenn ich klicke, um die Reihe zu redigieren und dann wird die Kreisbeschriftung erzeugt. Warum funktioniert es nicht bei der Erstbelastung? Hier
ist der benutzerdefinierte Code des 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
}
Können Sie den Code für die Methode 'cellForRowAtIndexPath' hinzufügen? – Marcio
@Marcio natürlich, ich habe hinzugefügt. Nicht sicher, warum es damit anfing, es zu tun – Jonnny
Meine Vermutung ist, dass 'label.frame' noch nicht gesetzt wurde, wenn' circleLabels' zum ersten Mal aufgerufen wird. Sobald es gezeichnet wurde und "label.frame" eine tatsächliche Größe hat, beginnt der Code wie erwartet zu arbeiten. Wenn ich richtig bin, sollte eine Konstante anstelle von "label.frame.size.width/2" das Problem beheben. – Marcio