使用withVisualFormat在TableViewCell中定位元素

问题描述 投票:0回答:1

使用下面的代码,我希望我的文本在我的标题下面排成一行,但它会被移动,如图中所示。我是使用withVisualFormat的新手,所以任何建议都会有所帮助。谢谢

enter image description here

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

        self.imgIcon = UIImageView(image: UIImage(named: "icon_tack_b_f"))
        self.imgIcon.frame.size = CGSize(width: 40, height: 40)
        self.lblTitle = UILabel()
        self.lblText = UILabel()
        self.imgStatus = UIImageView(image: UIImage(named: "icon_checked"))
        self.imgStatus.frame.size = CGSize(width: 30, height: 30)

        imgIcon.translatesAutoresizingMaskIntoConstraints = false
        lblTitle.translatesAutoresizingMaskIntoConstraints = false
        lblText.translatesAutoresizingMaskIntoConstraints = false
        imgStatus.translatesAutoresizingMaskIntoConstraints = false

        contentView.addSubview(imgIcon)
        contentView.addSubview(lblTitle)
        contentView.addSubview(lblText)
        contentView.addSubview(imgStatus)

        let viewsDict = [
            "icon" : imgIcon,
            "title" : lblTitle,
            "text" : lblText,
            "status" : imgStatus,
            ] as [String : Any]

        contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-[icon(40)]-[title]-[status(30)]-|", options: [], metrics: nil, views: viewsDict))
        contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[title]-[text]-|", options: [], metrics: nil, views: viewsDict))
        contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-40-[text]-30-|", options: [], metrics: nil, views: viewsDict))
    }
swift xcode
1个回答
1
投票

尝试在第一个视觉约束中设置对象之间的距离:

"H:|-0-[icon(40)]-0-[title]-0-[status(30)]-0-|"

另外,不要忘记每个图像的高度

"V:|[icon(40)]"
"V:|[status(30)]"

所以,结果将是:

contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[icon(40)]-0-[title]-0-[status(30)]-0-|", options: [], metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[title]-[text]-|", options: [], metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-40-[text]-30-|", options: [], metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[icon(40)]", options: [], metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[status(30)]", options: [], metrics: nil, views: viewsDict))
© www.soinside.com 2019 - 2024. All rights reserved.