gpt4 book ai didi

ios - UITableViewCell 重新排序控件 - 设置 backgroundColor

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:53 25 4
gpt4 key购买 nike

我的表格 View 中有一个自定义表格 View 单元格,其中一部分背景为白色,另一部分为灰色。一切都像一个魅力 - 直到重新排序出现:

enter image description here

我的问题是重新排序控件全是灰色的,但我希望它有一部分是白色的,基本上它看起来像表格的一部分。我可以使用此代码访问 View :

        for view in cell.subviews {
if String(describing: view.self).contains("UITableViewCellReorderControl") {
view.backgroundColor = .white
}
}

但是:在这里将 View 的背景颜色设置为白色将如下所示:

enter image description here

我显然不想要 - 我想让灰色一直到右边。我尝试了各种其他 View 修改(例如,将框架的高度设置得更小,CGTransform 等)似乎没有任何影响!?

如果有任何提示可以解决该问题,我将不胜感激!谢谢!

最佳答案

此代码应在您的 UITableViewCell 中运行。它会在其上激活 editMode,查找、隐藏 subview 并调整整个单元格上的 Reorder Control 的大小。关键是使用 layoutSubviews()

weak var reorderControl: UIView?
override public func awakeFromNib() {
super.awakeFromNib()
setEditing(true, animated: false)
reorderControl = findTheReorderControl()
removeSubviews(from: reorderControl)
}
private func findTheReorderControl() -> UIView? {
return subviews.first { view -> Bool in
let className = String(describing: type(of:view))
return className == "UITableViewCellReorderControl"
}
}
private func removeSubviews(from reorderControl: UIView?) {
reorderControl?.subviews.forEach({$0.removeFromSuperview()})
}
override var showsReorderControl: Bool {
get {
return true // short-circuit to on
}
set {}
}
override func setEditing(_ editing: Bool, animated: Bool) {
if editing == false {
return // ignore any attempts to turn it off
}
super.setEditing(editing, animated: animated)
}
override func layoutSubviews() {
super.layoutSubviews()
reorderControl?.frame = bounds
}

关于ios - UITableViewCell 重新排序控件 - 设置 backgroundColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43506089/

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