swift - 自定义 UITableViewCell 的布局约束不起作用

标签 swift uitableview uilabel constraints

我正在创建自定义 UITableViewCells,每个单元格都有一个 UILabel,但无法让标签显示在单元格左上角以外的任何地方,looks like this .

约束似乎没有应用,但它们正在被调用(到达断点)。我尝试用 UIImageView 替换 UILabel 并应用相同的约束但没有出现(即表格 View 单元格为空白)。

我错过了什么?

查看单元格:

import UIKit

class myTableViewCell: UITableViewCell {

    override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setupViews()
    }

    required init?(coder decoder: NSCoder) {
        super.init(coder: decoder)
    }

    let label: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.font = UIFont.systemFont(ofSize: 16, weight: UIFontWeightLight)
        label.text = "Sample"
        label.backgroundColor = UIColor.red
        return label
    }()

    func setupViews () {
        addSubview(label)
        //add constraints
        let marginsGuide = self.contentView.layoutMarginsGuide
        label.leadingAnchor.constraint(equalTo: marginsGuide.leadingAnchor).isActive = true
        label.trailingAnchor.constraint(equalTo: marginsGuide.trailingAnchor).isActive = true
        label.topAnchor.constraint(equalTo: marginsGuide.topAnchor).isActive = true
        label.bottomAnchor.constraint(equalTo: marginsGuide.bottomAnchor).isActive = true
    }

}

View Controller :

import UIKit

class myViewController: UIViewController, UITableViewDelegate, UITableViewDataSource  {

    var myTableView: UITableView = UITableView()

    var myArray = [Int]()

    override func viewDidLoad() {
        super.viewDidLoad()
        //... do stuff incl. loading data into my myArray
        let screenSize: CGRect = UIScreen.main.bounds
        self.myTableView.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height)
        self.myTableView.delegate = self
        self.myTableView.dataSource = self
        self.myTableView.register(IngredientListTableViewCell.self, forCellReuseIdentifier: "cell")
        self.view.addSubview(myTableView)
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return myArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = self.myTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! myTableViewCell
        return cell
    }

}

最佳答案

改变这个

addSubview(label)

对此

contentView.addSubview(label)

关于swift - 自定义 UITableViewCell 的布局约束不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443097/

相关文章:

ios - 使用自动版式,当导航栏消失时如何将UILabel保持在同一位置?

swift - 当我添加 imageView 时,UILabel 文本以错误的对齐方式截断

ios - 如何在iOS中实现comet-chat时修复 "Invalid API key format"

ios - CGImage 没有属性/元数据 (CGImageProperties)

swift - 当我之前打开它后返回到 View Controller 时,它不会为标签设置动画 Xcode Swift

iOS:有没有办法以编程方式以特定字体设置 Storyboard的所有字体?

ios - 具有两个自定义单元格的 TableView 导致单元格重用问题(Swift 4)

ios - 无法使用 Swift 访问 CoreData 中的一对多关系

swift - 如何在 UITableViewCell 的 @IBAction 函数中推送 ViewController

html - NSAttributedString 的最后一行未在 UILabel 中呈现