我想改变导航栏的背景颜色,但遇到了麻烦:
let colourRGBs: [[CGFloat]] = [[247, 247, 247], [38, 123, 238], [93, 204, 3]]
let colourTitles: [String] = ["Default", "Blue", "Green"]
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return colourTitles.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PickNavBarColourCell", for: indexPath) as! PickNavBarColourCell
let RGB = colourRGBs[indexPath.row]
cell.backgroundColor = UIColor(red: RGB[0]/255.0, green: RGB[1]/255.0, blue: RGB[2]/255.0, alpha: 1.0)
cell.configureCell(text: colourTitles[indexPath.row])
if indexPath.row == passOnNavBarColour.colour {
cell.accessoryType = UITableViewCellAccessoryType.checkmark
}
else {
cell.accessoryType = UITableViewCellAccessoryType.none
}
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
UserDefaults.standard.set(indexPath.row, forKey: "NavBarColour")
passOnNavBarColour.colour = indexPath.row
tableView.reloadData()
let RGB = colourRGBs[indexPath.row]
self.navigationController?.navigationBar.backgroundColor = UIColor(red: RGB[0]/255.0, green: RGB[1]/255.0, blue: RGB[2]/255.0, alpha: 1.0)
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 44
}
例如,当我为蓝色执行此操作时,结果如下:
它应该比它应该更加微弱 .
我尝试了以下代码:
self.navigationController?.navigationBar.isTranslucent = false
我在设置单元格背景颜色之前运行
self.navigationController?.navigationBar.backgroundColor = UIColor(red: RGB[0]/255.0, green: RGB[1]/255.0, blue: RGB[2]/255.0, alpha: 1.0)
然而,这不会导致任何颜色变化 .
我该如何解决这个问题?
3 回答
您可以在
didFinishLaunchingWithOptions
中的AppDelegate
中添加此简单行导航栏:
将greenColor替换为您想要的任何UIColor,如果您愿意,也可以使用RGB .
导航栏文字:
用您喜欢的任何颜色替换orangeColor .
标签栏:
标签栏文字:
在最后两个中,将brownColor和yellowColor替换为您选择的颜色 .
使用
navigationBar.barTintColor
来自Apple的文件:https://developer.apple.com/documentation/uikit/uinavigationbar/#1654191
无法更改
navigationBar.backgroundColor
,因为它被一些视图隐藏 . 您可以通过断点查看视图层次结构 .