GBA-8-19/CGame/Components/Table View/BadgedTableViewCell.swift
bluesea 66c5202be8 s
2024-06-14 18:12:40 +08:00

74 lines
2.0 KiB
Swift

//
// BadgedTableViewCell.swift
// Hthik
//
// Created by Hthik on 11/20/18.
// Copyright © 2018 Hthik. All rights reserved.
//
import UIKit
class BadgedTableViewCell: UITableViewCell
{
let badgeLabel = UILabel()
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.initialize()
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?)
{
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.initialize()
}
private func initialize()
{
self.badgeLabel.clipsToBounds = true
self.badgeLabel.textAlignment = .center
self.badgeLabel.backgroundColor = .red
self.badgeLabel.font = UIFont.boldSystemFont(ofSize: 14)
self.badgeLabel.textColor = .white
self.contentView.addSubview(self.badgeLabel)
}
override func layoutSubviews()
{
super.layoutSubviews()
guard let textLabel = self.textLabel else { return }
let spacing = 8 as CGFloat
var contentSize = self.badgeLabel.intrinsicContentSize
contentSize.width += 10
contentSize.height += 10
contentSize.width = max(contentSize.width, contentSize.height)
var frame = CGRect(x: self.contentView.bounds.maxX - contentSize.width,
y: self.contentView.bounds.midY - contentSize.height / 2,
width: contentSize.width,
height: contentSize.height)
if self.accessoryType == .none
{
frame.origin.x -= spacing
}
self.badgeLabel.frame = frame
self.badgeLabel.layer.cornerRadius = frame.height / 2
self.badgeLabel.backgroundColor = .red
let overlap = textLabel.frame.maxX - (frame.minX - spacing)
if overlap > 0 && !self.badgeLabel.isHidden
{
textLabel.frame.size.width -= overlap
}
}
}