#swift #xcode #uicollectionview
Вопрос:
У меня есть представление коллекции, в котором отображаются изображения. Под изображением есть этикетка, на которой указано, что это за фотография. Моя проблема в том, что, когда представление коллекции попадает во вторую строку, изображения во второй строке закрывают метки для изображений в верхней строке. Как я могу это исправить?
Спасибо!
Мой код:
private func collectionViewLayout() -> UICollectionViewLayout {
let layout = UICollectionViewFlowLayout()
let cellWidthHeightConstant: CGFloat = UIScreen.main.bounds.width * 0.2
layout.sectionInset = UIEdgeInsets(top: 50,
left: 10,
bottom: 0,
right: 10)
layout.scrollDirection = .vertical
layout.minimumInteritemSpacing = 0
layout.itemSize = CGSize(width: cellWidthHeightConstant, height: cellWidthHeightConstant)
return layout
}
fileprivate let bg: UIImageView = {
let iv = UIImageView()
iv.translatesAutoresizingMaskIntoConstraints = false
iv.contentMode = .scaleAspectFill
iv.clipsToBounds = true
iv.layer.cornerRadius = 12
return iv
}()
fileprivate let lbl: UILabel = {
let label = UILabel(frame: .zero)
label.textAlignment = .center
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
label.font = UIFont(name: label.font.fontName, size: 15)
label.numberOfLines = 0
return label
}()
private enum Constants {
static let imageHeight: CGFloat = 80.0
static let verticalSpacing: CGFloat = 82.0
static let horizontalPadding: CGFloat = 8.0
static let profileDescriptionVerticalPadding: CGFloat = 8.0
}
override init(frame: CGRect) {
super.init(frame: .zero)
contentView.addSubview(bg)
contentView.addSubview(lbl)
bg.leadingAnchor.constraint(equalTo: contentView.leadingAnchor).isActive = true
bg.trailingAnchor.constraint(equalTo: contentView.trailingAnchor).isActive = true
bg.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
bg.heightAnchor.constraint(equalToConstant: Constants.imageHeight).isActive = true
lbl.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: Constants.horizontalPadding).isActive = true
lbl.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -Constants.horizontalPadding).isActive = true
lbl.topAnchor.constraint(equalTo: bg.bottomAnchor, constant: Constants.profileDescriptionVerticalPadding).isActive = true
}
Комментарии:
1. Если вы используете
UICollectionViewFlowLayout
, сделайтеthe layout.itemSize.height
больше2. Похоже, это не работает. Я обновил свой пост, добавив больше кода.
3.
layout.itemSize = CGSize(width: cellWidthHeightConstant, height: cellWidthHeightConstant * 1.6)