我正在继续推出针对iPad的iOS应用。今天早上asked a question在网站上我得到了正确的答案。但由于某种原因,Alpha不能在我的桌子上工作。
这是我的View tie TableView:
这是我的Swift代码:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
let data:[String] = ["Row 0","Row 1", "Row 2","Row 3","Row 4","Row 5","Row 6"]
@IBOutlet var tableView: UITableView!
var rowSelected:Int! = nil
override func viewDidLoad() {
super.viewDidLoad()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:Cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! Cell
if rowSelected != nil {
if rowSelected > indexPath.row {
cell.alpha = 0.7
} else if rowSelected == indexPath.row {
cell.alpha = 1.0
} else {
cell.alpha = 0.3
}
}
cell.labelText.text = self.data[indexPath.row]
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.rowSelected = indexPath.row
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}
}
当我选择一行时,没有任何反应,Alpha没有。在这个例子中,我直接在单元格中应用了Alpha(我在单元格中禁用了Opaque选项 - 单元格不是不透明的)。 在原始应用中,我有2个标签,2个按钮和一张图片。为了更加实用,Alpha的必要条件直接用于Cell。
有人可以帮助我吗?
答案 0 :(得分:7)
您需要注意三个要素:
UITableView
如果您的tableview的背景是白色的,那么无论如何
你将在单元格上设置的alpha,它不会反映在UI
上
正常。尝试将tableview的背景颜色设置为透明。UITableViewCell
期待你正在研究这种控制。UITableViewCell
' contentView
尝试将UITableViewCell
的{{1}}背景颜色设置为透明。答案 1 :(得分:2)
我知道这是一个老线程。但是我想在这里留下我的建议,如果有人发现它有用的话。您可以将alpha
应用于UITableViewCell
的内容视图,这对我有效。
cell.contentView.alpha = 0.3
答案 2 :(得分:1)
tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
。尝试重新加载tableview的数据以获得快速结果。
从长远来看,你应该重构alpha修改,以便在选择发生时在所有可见细胞上发生。
答案 3 :(得分:1)
您可能仍然拥有tableView
的白色背景。尝试设置tableView
的背景,以便在代码中清除:
tableView.backgroundColor = .clearColor()
或在界面编辑器中:
答案 4 :(得分:0)
在UITableView
和UITableViewCell
上设置背景以清除颜色。
在ContentView
上,将背景颜色设置为默认值(如白色),并在那里设置alpha。
如果您的自定义单元格包含背景图片和其他内容,请将ContentView
设置为清除,并将单元格的背景图像设置为较低的Alpha。