嘗試為收件箱 tableviewcell 中的每個未讀資料添加紅點徽章。
我嘗試使用 cell.accessoryview 添加徽章
let size: CGFloat = 9
let width = max(size, 0.7 * size * 1) // perfect circle is smallest allowed
let badge = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: size))
badge.layer.cornerRadius = size / 2
badge.layer.masksToBounds = true
badge.textAlignment = .center
badge.textColor = UIColor.white
badge.backgroundColor = UIColor.red
if viewModel.sortedInboxItems[indexPath.section].isRead {
cell.accessoryView = badge
}
但是如果使用 cell.accessoryview 它將改變如下圖所示的顯示(單元格右上角的 TIME 向前移動)。如何讓它不改變顯示?

編輯
嘗試在自定義 uitableview 單元格中創建點作為 uilabel,如下圖所示

但結果如下圖所示。紅點形狀不夠好?有人可以幫助解決這個問題嗎?

uj5u.com熱心網友回復:
accessoryView不是單元格的一部分contentView。如果你設定它,accessoryView它會推動它contentView為自己騰出空間。更多資訊可以在
如果您不希望它這樣做,請將您的紅點放入單元格本身,而不是使用accessoryView. 目前尚不清楚您是如何構建單元格的,但看起來您已經創建了一個 custom UITableViewCell,因此您應該能夠毫無困難地做到這一點。
或者如上所述,如果適用,您可以將時間標簽包含在附件視圖中的紅點旁邊。
uj5u.com熱心網友回復:
考慮UIView像使用標簽一樣使用帶角半徑。為了確保形狀正確(尺寸已正確初始化),請在 overriden 中更改其角半徑layoutSubviews。
override func layoutSubviews() {
super.layoutSubviews()
badgeInboxView.layer.cornerRadius = badgeInboxView.frame.height/2
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/452933.html
上一篇:連接組件之間的SwiftUI互動
下一篇:解碼空陣列不拋出指定陣列
