Reputation: 2465
Using the code below, I would expect my text to be lined up beneath my title, however it is shifted, as seen in the image. I am new to using withVisualFormat, so any advice would help. Thanks
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))
}
Upvotes: 0
Views: 24
Reputation: 5679
Try setting distance between objects in you first visual constraint:
"H:|-0-[icon(40)]-0-[title]-0-[status(30)]-0-|"
Also, don't forget about the height of each image
"V:|[icon(40)]"
"V:|[status(30)]"
So, the result would be:
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))
Upvotes: 1