自定义UITableViewCell,布局单元格,默认为imageViewer

时间:2014-08-27 19:52:34

标签: ios uitableview swift

我有一个自定义tableCell工作正常,直到我试图在每个单元格的左侧添加图像。 将图像放入conventView时,一切正常,但我不喜欢分隔符在图像中间开始时。

我希望消除每行左侧的空间,我想将我的图像放在那里,所以单元格分隔符只显示在单元格内容下,而不是在图像的一部分下面,我正在捣乱这个分隔符几个小时,现在我无法显示我的内容..

也是我的模拟器,我花了10秒的时间来显示表格内容..

你可以帮助我吗,我知道这应该是一件简单的事情,但是我无法解决这个问题......

谢谢..

这是我的自定义TableCell

import UIKit

class TableCellMessages: UITableViewCell {
    var labUerName = UILabel();
    var labMessage = UILabel();
    var labTime    = UILabel();
    var labRead    = UILabel();


    override func awakeFromNib() {
        super.awakeFromNib()

        self.imageView.clipsToBounds = true
        self.imageView.layer.cornerRadius = 22;
        self.imageView.contentMode = UIViewContentMode.ScaleAspectFill
//        self.imageView.autoresizingMask = UIViewAutoresizing.None

        var currentFont:UIFont = labUerName.font
        labUerName.font = UIFont.boldSystemFontOfSize(currentFont.pointSize);

        labUerName.setTranslatesAutoresizingMaskIntoConstraints(false)
        labMessage.setTranslatesAutoresizingMaskIntoConstraints(false)
        labTime.setTranslatesAutoresizingMaskIntoConstraints(false)
        labRead.setTranslatesAutoresizingMaskIntoConstraints(false)

        contentView.addSubview(labUerName)
        contentView.addSubview(labMessage)
        contentView.addSubview(labTime)
        contentView.addSubview(labRead)


        //Set layout
        var viewsDict = Dictionary <String, UIView>()
        viewsDict["username"] = labUerName;
        viewsDict["message"] = labMessage;
        viewsDict["time"] = labTime;
        viewsDict["read"] = labRead;

        contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[username]-1-[message]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict))
        contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[time]-1-[read]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict))
        contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[username]-[time]-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict))
        contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[message]-[read]-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict))

    }

    override func layoutSubviews() {
        super.layoutSubviews()

        var x = self.frame.origin.x;
        var y = self.frame.origin.y;
        var width = self.frame.width;
        var height = self.frame.height;

        self.imageView.frame = CGRectMake(x, y, height, height);
        self.contentView.frame = CGRectMake(x + height, y, width - height , height)
    }

}

1 个答案:

答案 0 :(得分:0)

要修复单元格分隔符,您需要在您最有可能在视图控制器中引用的UITableView上使用separatorInset属性:

self.tableView.separatorInset = UIEdgeInsets(0,0,0,0)

请参阅https://developer.apple.com/library/prerelease/iOS/documentation/UIKit/Reference/UITableView_Class/index.html#//apple_ref/occ/instp/UITableView/separatorInset

除此之外,如果您将自定义单元格设计为故事板中的原型单元格而不是以编程方式布置标签等,那么您将为自己和您的程序员节省很多麻烦。