tableview中的阴影保持堆叠(Swift)

时间:2015-12-03 10:10:47

标签: ios iphone swift uitableview

我目前在tableview中列出了70个问题。一旦问题得到解决,表格就会更新并显示一个复选标记(一切正常)。

我遇到的问题是我在tableview中添加到每个单元格的阴影。出于某种原因,他们在向上和向下滚动时保持堆叠。此外,当将设备放置在横向中时,将绘制新的CGRect,但旧的CGRect仍然存在(也重叠)。

代码:

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            let cell:QuestionCell = tableView.dequeueReusableCellWithIdentifier("cell") as! QuestionCell
let bgColorView = UIView()
        bgColorView.frame = CGRectMake(5, 5, (tableView.frame.width)-10, (cell.frame.height)-10)
        bgColorView.backgroundColor = UIColor.clearColor();
        cell.selectedBackgroundView = bgColorView

        let myBackView=UIView(frame:cell.frame)
        myBackView.frame = CGRectMake(5, 5, (tableView.frame.width)-10, (cell.frame.height)-10)
        myBackView.backgroundColor = UIColor.whiteColor();
        myBackView.layer.masksToBounds = false
        myBackView.clipsToBounds = false
        myBackView.layer.cornerRadius = 3
        myBackView.layer.shadowOffset = CGSizeMake(-1, 1)
        myBackView.layer.shadowRadius = 2
        myBackView.layer.shadowOpacity = 0.4;
        let test:CGRect = myBackView.layer.bounds
        myBackView.layer.shadowPath = UIBezierPath(rect: test).CGPath
        cell.addSubview(myBackView)
        cell.sendSubviewToBack(myBackView)



        if (question.showAfter == "true") {
            cell.accessoryType = UITableViewCellAccessoryType.Checkmark
            //give header of correct question blue color
            cell.backgroundColor = UIColor.lightTextColor()
            cell.headerQuestion.textColor = UIColor(red:0.01, green:0.53, blue:0.82, alpha:1.0)
            }
        else
        {
                cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
                cell.backgroundColor = UIColor.whiteColor()
                cell.headerQuestion.textColor = UIColor(red:0.38, green:0.49, blue:0.55, alpha:1.0)
        }
        return cell

}

overlapping of the shadows at rotating (or scrolling up/down)

我已经尝试过以下内容(这是某个关于Objective-C主题的人的解决方案):

let tag = 120 
if (cell.tag != 120) {
//the above code here
cell.tag = tag 
}

这解决了阴影问题,但是当我将设备转为横向模式时,它不会重绘。 有任何想法吗?欢迎所有人

2 个答案:

答案 0 :(得分:2)

每次重复使用单元格时,都会添加新阴影。您应该只在创建时添加一次阴影。

创建UITableViewCell的子类并在那里进行常规自定义(背景颜色,阴影)。然后使用tableview注册您的课程。只在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

中按每个单元格执行不同的操作

答案 1 :(得分:1)

试试这个:

bindkey -M menuselect '^M' .accept-line