gpt4 book ai didi

ios - 突出显示整个 UITableviewcell 而不是单元格内的圆形 View

转载 作者:行者123 更新时间:2023-11-28 19:28:39 24 4
gpt4 key购买 nike

我试图实现圆角的 tableview 单元格效果,所以我试图在我的自定义单元格类中弄乱 layoutSubviews:

override func layoutSubviews() {        
// Set the width of the cell
self.bounds = CGRectMake(self.bounds.origin.x, self.bounds.origin.y, self.bounds.size.width - 40, self.bounds.size.height)
super.layoutSubviews()
}

听说不建议改变cell本身的宽度,给cell加一个UIView(代码中叫mainView)加约束+圆角半径就可以了。

我的自定义单元类现在是:

class customTableViewCell: UITableViewCell {

@IBOutlet weak var mainView: UIView!

override func awakeFromNib() {
super.awakeFromNib()

mainView.layer.borderWidth = 2
mainView.layer.cornerRadius = 20
mainView.layer.borderColor = UIColor.black.cgColor
mainView.layer.masksToBounds = true
// Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}

下面是我的 ViewController 的相关组件,它包含 mainTableView:

    override func viewDidLoad() {
super.viewDidLoad()

mainTableView.rowHeight = 100
mainTableView.backgroundColor = UIColor.clear

mainTableView.delegate = self
mainTableView.dataSource = self
// Do any additional setup after loading the view, typically from a nib.
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = self.mainTableView.dequeueReusableCell(withIdentifier: "customCell") as! customTableViewCell

// note that indexPath.section is used rather than indexPath.row
cell.textLabel?.text = self.animals[indexPath.row]
cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 16)
cell.textLabel?.textAlignment = .center

// add border and color

cell.backgroundColor = UIColor.clear
cell.layer.borderColor = UIColor.clear.cgColor
cell.layer.borderWidth = 1
//cell.layer.cornerRadius = 8
cell.clipsToBounds = true

return cell
}

我的结果是这样的:

screenshot of simulator

如您所知,整个单元格都突出显示,而不仅仅是里面的内容。

我剩下的问题是 - 有没有办法只突出显示单元格的 contentView 内的 UIView 而不是整个单元格?或者我应该不启用选择和突出显示。

请告诉我。谢谢。

最佳答案

对于 Swift 4.1,在您的tableView(_ tableView: UITableView, cellForRowAt...) 或 Storyboard tableview 单元格场景中:

cell.selectionStyle = .none

在你的细胞子类中:

override func setHighlighted(_ highlighted: Bool, animated: Bool) {
super.setHighlighted(highlighted, animated: animated)
// do your custom things with the cell subviews here
if highlighted == true {
self.contentView.backgroundColor = .gray
} else {
self.contentView.backgroundColor = .white
}
}

关于ios - 突出显示整个 UITableviewcell 而不是单元格内的圆形 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48726858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com