UIColor.Clear 在swift3的部分标题中使用时没有给出预期的结果
Posted
技术标签:
【中文标题】UIColor.Clear 在swift3的部分标题中使用时没有给出预期的结果【英文标题】:UIColor.Clear not giving expected result when using in section header in swift3 【发布时间】:2017-08-02 20:56:59 【问题描述】:我有一个使用 Swift3 构建的应用程序,带有一个表格视图。我使用情节提要,并且 tableview 放置在视图控制器内。我正在使用部分并通过代码设置部分标题。我希望部分标题显示我为表格视图设置的相同灰色背景。我尝试设置相同的颜色代码,但没有帮助。所以我尝试设置为 UIColor.clear,但它显示为节标题的白色背景。我需要它来使用 tableview 背景。你能指导我怎么回事吗?
代码:
func tableView(_ tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int)
print("willDisplayFooterView.. for section \(section) ")
(view as! UITableViewHeaderFooterView).backgroundView?.backgroundColor = UIColor.clear //UIColor(red: 232.0, green: 232.0, blue: 232, alpha: 1.0)
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
print("willDisplayHeaderView,... for section \(section) ")
(view as! UITableViewHeaderFooterView).backgroundView?.backgroundColor = UIColor.clear //UIColor(red: 232.0, green: 232.0, blue: 232, alpha: 1.0)
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
print("titleForHeaderInSection")
return self.section [section ]
我尝试使用 viewForHeaderInSection,但它根本没有被调用。
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
print("in viewForHeaderInSection")
let view = UIView()
let label = UILabel()
label.text = self.section [section ]
view.addSubview(label)
view.backgroundColor = UIColor.clear
label.translatesAutoresizingMaskIntoConstraints = false
let horizontallayoutContraints = NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0)
view.addConstraint(horizontallayoutContraints)
let verticalLayoutContraint = NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 1, constant: 0)
view.addConstraint(verticalLayoutContraint)
return view
【问题讨论】:
【参考方案1】:尝试设置视图的背景颜色..而不是 view.backgroundView
func tableView(_ tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int)
print("willDisplayFooterView.. for section \(section) ")
(view as! UITableViewHeaderFooterView).backgroundColor = UIColor.clear //UIColor(red: 232.0, green: 232.0, blue: 232, alpha: 1.0)
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
print("willDisplayHeaderView,... for section \(section) ")
(view as! UITableViewHeaderFooterView).backgroundColor = UIColor.clear //UIColor(red: 232.0, green: 232.0, blue: 232, alpha: 1.0)
免责声明:我不太擅长快速语法。但希望这能回答您的问题。
【讨论】:
嗨.. 仍然没有给我预期的行为。我尝试按照您的建议使用并收到警告说这是一种已弃用的行为,而是使用 contentView 背景颜色。所以我尝试使用它,但仍然没有运气。 func tableView(_ tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) print("willDisplayFooterView.. for section(section)") (view as! UITableViewHeaderFooterView).contentView.backgroundColor = UIColor.clear 你是否覆盖了这个方法? “func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?” 嗨..正如我在原始问题中编辑的那样,我尝试使用 viewForHeaderInSection,但它根本没有被调用。 尝试在section方法中覆盖header的高度 是的,我确实有一个对 heightForHeaderInSection 的覆盖,这就是我为我的部分标题设置高度的地方。我不确定如何设置背景颜色以清除。【参考方案2】:你可以改变 contentView 的背景颜色而不是 backgroundView
(view as! UITableViewHeaderFooterView).contentView?.backgroundColor = UIColor. groupTableViewBackground
【讨论】:
是的,我也尝试过,按照 Marcio 的建议,但没有奏效。 Marcio 建议更改视图的 backgroundColor 而不是 contentView。您是否尝试过更改视图 contentView 的 backgroundColor ? 是的,我尝试按照他的建议使用并收到警告说这是一种已弃用的行为,而是使用 contentView 背景颜色。所以我尝试使用它,但仍然没有运气。 func tableView(_ tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) print("willDisplayFooterView.. for section(section)") (view as! UITableViewHeaderFooterView).contentView.backgroundColor = UIColor.clear以上是关于UIColor.Clear 在swift3的部分标题中使用时没有给出预期的结果的主要内容,如果未能解决你的问题,请参考以下文章
给导航条设置成颜色的背景图像 : UIGraphicsBeginImageContext ...
iOS:在 Swift3 中,在 UICollectionViewLayout 部分,我如何访问主要的 CollectionView 属性?