Alpha在UITableViewCell中不起作用

时间:2016-01-11 16:30:01

标签: ios swift uitableview

我正在继续推出针对iPad的iOS应用。今天早上asked a question在网站上我得到了正确的答案。但由于某种原因,Alpha不能在我的桌子上工作。

这是我的View tie TableView:

enter image description here

这是我的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。

有人可以帮助我吗?

5 个答案:

答案 0 :(得分:7)

您需要注意三个要素:

  1. UITableView如果您的tableview的背景是白色的,那么无论如何 你将在单元格上设置的alpha,它不会反映在UI上 正常。尝试将tableview的背景颜色设置为透明。
  2. UITableViewCell期待你正在研究这种控制。
  3. UITableViewCell' contentView尝试将UITableViewCell的{​​{1}}背景颜色设置为透明。

答案 1 :(得分:2)

我知道这是一个老线程。但是我想在这里留下我的建议,如果有人发现它有用的话。您可以将alpha应用于UITableViewCell的内容视图,这对我有效。

cell.contentView.alpha = 0.3

答案 2 :(得分:1)

仅当tableview第一次呈现单元格时,才会调用

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)。尝试重新加载tableview的数据以获得快速结果。

从长远来看,你应该重构alpha修改,以便在选择发生时在所有可见细胞上发生。

答案 3 :(得分:1)

您可能仍然拥有tableView的白色背景。尝试设置tableView的背景,以便在代码中清除:

tableView.backgroundColor = .clearColor()

或在界面编辑器中:

enter image description here

答案 4 :(得分:0)

UITableViewUITableViewCell上设置背景以清除颜色。 在ContentView上,将背景颜色设置为默认值(如白色),并在那里设置alpha。

如果您的自定义单元格包含背景图片和其他内容,请将ContentView设置为清除,并将单元格的背景图像设置为较低的Alpha。