Ich habe eine einfache UICollectionViewCell, die volle Breite ist und ich verwende SnapKit, um seine Unteransichten zu gestalten. Ich verwende SnapKit für meine andere Ansicht und es funktioniert großartig, aber nicht in der SammlungViewCell. Dies ist das Layout ich zu erreichen bin versucht: collectionViewCell layoutUICollectionViewCell Layout mit SnapKit
Der Code für die collectionViewCell ist:
lazy var imageView: UIImageView = {
let img = UIImageView(frame: .zero)
img.contentMode = UIViewContentMode.scaleAspectFit
img.backgroundColor = UIColor.lightGray
return img
}()
override init(frame: CGRect) {
super.init(frame: frame)
let imageWidth = CGFloat(frame.width * 0.80)
let imageHeight = CGFloat(imageWidth/1.77)
backgroundColor = UIColor.darkGray
imageView.frame.size.width = imageWidth
imageView.frame.size.height = imageHeight
contentView.addSubview(imageView)
imageView.snp.makeConstraints { (make) in
make.top.equalTo(20)
//make.right.equalTo(-20)
//make.right.equalTo(contentView).offset(-20)
//make.right.equalTo(contentView.snp.right).offset(-20)
//make.right.equalTo(contentView.snp.rightMargin).offset(-20)
//make.right.equalToSuperview().offset(-20)
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
ohne Einschränkungen der Anwendung der Imageview in der Zelle links oben angezeigt, aber die Anwendung keine Einschränkungen macht die Bild verschwindet. Wenn Sie die collectionViewCell in der Debug-Ansicht überprüfen, werden die Optionen imageView und constrains angezeigt, aber "Größe und horizontale Position sind für UIImageView nicht eindeutig".
Ich habe auch versucht, contentView.translatesAutoresizingMaskIntoConstraints = false unter anderem, aber die gleichen Ergebnisse zu setzen.
Ich benutze alle Code und keine Storyboard UI oder Layouts.
Danke für jede Hilfe!
Das funktionierte - thks. Für die x-Position musste ich den Code auf - make.centerX.equalTo (contentView.snp.centerX) aktualisieren. Für mein Layout wollte ich jedoch, dass das Bild die rechte Seite der Zelle umklammert, sodass ich stattdessen make.right.equalTo (contentView.snp.rightMargin) verwendete. – Dennish