В настоящее время я создаю многократно используемое представление, которое использует преимущества динамического изменения размера, которое UITableView предлагает со своими ячейками.
То, чего я пытаюсь добиться, - это дать представлению внутри ячейки ширину и высоту в зависимости от размера, который был задан в свойстве размера, определенного в структуре, я пропускаю это с помощьюфункция конфигурации, после установки размера представления.
Затем я центрирую его по xAxis и наложу любые поля вокруг представления, используя свойство в структуре, которое является просто свойством UIEdgeInset.При использовании библиотеки SnapKit это выглядит следующим образом.
if let formImageItem = formImageItem,
let size = formImageItem.size {
formItemImgVw = UIImageView(frame: CGRect(x: 0, y: 0, width: size.width, height: size.height))
formItemImgVw?.image = formImageItem.image
formItemImgVw?.contentMode = formImageItem.aspectFit
contentView.addSubview(formItemImgVw!)
formItemImgVw?.snp.makeConstraints({ (make) in
make.size.equalTo(CGSize(width: size.width, height: size.height))
make.top.equalTo(formImageItem.margin.top)
make.bottom.equalTo(formImageItem.margin.bottom)
make.centerX.equalToSuperview()
})
}
Проблема, которую я, похоже, имею, заключается в том, что я получаю следующее предупреждение.
2018-10-12 14:57:34.101532+0100 xxxx Dev[6104:2160548] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<SnapKit.LayoutConstraint:0x2830ec720@FormImageViewTableViewCell.swift#61 UIImageView:0x10530a940.height == 114.0>",
"<SnapKit.LayoutConstraint:0x2830ec780@FormImageViewTableViewCell.swift#62 UIImageView:0x10530a940.top == UITableViewCellContentView:0x105503500.top>",
"<SnapKit.LayoutConstraint:0x2830ec7e0@FormImageViewTableViewCell.swift#63 UIImageView:0x10530a940.bottom == UITableViewCellContentView:0x105503500.bottom>",
"<NSLayoutConstraint:0x2837e2580 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x105503500.height == 44 (active)>"
)
Will attempt to recover by breaking constraint
<SnapKit.LayoutConstraint:0x2830ec720@FormImageViewTableViewCell.swift#61 UIImageView:0x10530a940.height == 114.0>
Я понимаю, что это говорит мнев основном, он выбирает использование высоты 44, которая установлена по умолчанию для ячейки табличного представления.Но я не могу понять, почему он использует эту высоту по умолчанию, а не ту, которую я определил в своих ограничениях, и применяет высоту к виду, добавляя при этом расстояние сверху и снизу.
Кроме того, при использовании отладчика для проверки пользовательского интерфейса создается впечатление, что высота вообще не устанавливается, и, как вы можете видеть, высота 44 просто обрезает все изображение.
Итак, в конечном итоге я пытаюсь достичь возможности задавать вид определенной высоты и ширины и использовать значения, чтобы применить верхний и нижний интервалы (поля) для изменения размера ячейки.что это в настоящее время.