滑动 Table 单元格与滑动动作中的单元格内容重叠

Swipe Table Cells overlapping cell content on swipe motion

我在 swift 中使用 MGSwipeTableCell,但尝试了多个其他库,都导致了同样的问题。

基本上,我设置了一个 MGSwipeTableCell 类型的自定义单元格 class。我添加了一些标签等,这一切都很好。请参阅下面的代码以获取 Cell Class 代码。

import UIKit
import BTLabel
import MGSwipeTableCell

class MessageCell: MGSwipeTableCell {

let name = UILabel()
let contactTime = BTLabel()
let lineSeperator = UIView()

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)

}


required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!
}


override func layoutSubviews() {

    super.layoutSubviews()

    self.backgroundColor = Styles().heyGreen()
    self.selectionStyle = .None

    name.frame = CGRectMake(self.bounds.width/10, self.bounds.height/5, self.bounds.width/10*7, self.bounds.height/10*5)
    name.backgroundColor = UIColor.clearColor()
    name.font = Styles().FontBold(30)
    name.textColor = UIColor.whiteColor()
    name.textAlignment = .Left
    self.addSubview(name)


    contactTime.frame = CGRectMake(self.bounds.width/10, self.bounds.height/10*7, self.bounds.width/10*7, self.bounds.height/10*2)
    contactTime.backgroundColor = UIColor.clearColor()
    contactTime.font = Styles().FontBold(15)
    contactTime.textColor = Styles().heySelectedOverLay()
    contactTime.verticalAlignment = .Top
    contactTime.textAlignment = .Left
        self.addSubview(contactTime)

        lineSeperator.frame = CGRectMake(0, self.bounds.height - 1, self.bounds.width, 1)
        lineSeperator.backgroundColor = Styles().heySelectedOverLay()
        self.addSubview(lineSeperator)
    }

}

cellForRowMethod在我的tableviewcontroller中是这样的。

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cellIdendifier: String = "MessageCell"

    var cell = tableView.dequeueReusableCellWithIdentifier(cellIdendifier) as! MessageCell!
    if cell == nil {
   tableView.registerClass(MessageCell.classForCoder(), forCellReuseIdentifier: cellIdendifier)

        cell = MessageCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdendifier)
    }

    cell.name.text = "heysup"
    cell.contactTime.text = "100 days"

    cell.delegate = self //optional

    //configure left buttons
    cell.leftButtons = [MGSwipeButton(title: "", icon: UIImage(named:"check.png"), backgroundColor: UIColor.greenColor())
        ,MGSwipeButton(title: "", icon: UIImage(named:"fav.png"), backgroundColor: UIColor.blueColor())]
    cell.leftSwipeSettings.transition = MGSwipeTransition.Rotate3D

    //configure right buttons
    cell.rightButtons = [MGSwipeButton(title: "Delete", backgroundColor: UIColor.redColor())
        ,MGSwipeButton(title: "More",backgroundColor: UIColor.lightGrayColor())]
    cell.rightSwipeSettings.transition = MGSwipeTransition.Rotate3D

    return cell
}

问题在于,这是我滑动时的样子。

我不确定它哪里出了问题或它在做什么。我也不确定是不是因为我将标签添加到了错误的图层?我记得在 obj-c 中你曾经向单元格视图添加东西或类似的东西......

有什么建议吗?

我实际上解决了这个问题 - 我需要将标签添加到 contentView,而不是实际视图。

所以代码应该是

self.contentView.addSubview(name) 

例如在自定义tableviewcell上