繁体   English   中英

在UICollectionViewCell中以编程方式设置布局约束

[英]Programmatically setting layout constraints in a UICollectionViewCell

我有一个集合视图单元格,我试图在其中布置三个标签和一个图像。 我似乎可以使垂直布局正常运行,但是我似乎无法使水平布局达到可接受的状态-标签似乎并不想按照我的意愿工作。

基本上,垂直尺寸是固定的,但是我可以根据屏幕的宽度来更改单元格的水平尺寸,但是通常在320左右。我希望图像处于固定位置,但是UILabel可以容纳任何图片右边的剩余空间。

我在下面附上了预期布局的图片:

在此处输入图片说明

对于垂直布局,我具有以下内容,其中标签为l1到l3,图像为i1:

要将图片从顶部限制为20px:

contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[i1(42)]", options: nil, metrics: nil, views: dictionaryOfViews))

要将标签垂直限制在固定的134个高度单元格中:

contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[l1(21)][l2(21)]-10-[l3(42)]-20-|", options: nil, metrics: nil, views: dictionaryOfViews))

然后,我期望水平标签如下:

contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[i1(42)]", options: nil, metrics: nil, views: dictionaryOfViews))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-82-[l1]-20-|", options: nil, metrics: nil, views: dictionaryOfViews))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-82-[l2]-20-|", options: nil, metrics: nil, views: dictionaryOfViews))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-82-[l3]-20-|", options: nil, metrics: nil, views: dictionaryOfViews))

这几乎可以工作。 我必须设置以下内容才能使多行标签也能正常工作:

descriptionLabel.setContentCompressionResistancePriority(0, forAxis: .Horizontal)

我遇到的问题是,标签的所有位置似乎仍然都离左侧太远,而右侧却留有相当大的空隙,好像宽度没有动态调整一样?

我将如何纠正我的任何想法,将不胜感激。

非常感谢。

这里只是个想法...您是否尝试过将标签的左侧设置为图像的右侧?

contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[i1]-20-[l1]-20-|", options: nil, metrics: nil, views: dictionaryOfViews))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[i1]-20-[l2]-20-|", options: nil, metrics: nil, views: dictionaryOfViews))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[i1]-20-[l3]-20-|", options: nil, metrics: nil, views: dictionaryOfViews))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM