Ограничение UITableViewCell, неправильный rightAnchor - PullRequest
0 голосов
/ 02 сентября 2018

Мне нужно программно ограничить UITableViewCell с помощью кода ... Я пытаюсь создать вспомогательное представление внутри контейнера контейнера, это фактический код:

contentView.addSubview(testContainerView)

testContainerView.leftAnchor  .constraint(equalTo: contentView.leftAnchor  , constant: 8).isActive = true
testContainerView.topAnchor   .constraint(equalTo: contentView.topAnchor   , constant: 0).isActive = true
testContainerView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0).isActive = true
testContainerView.rightAnchor .constraint(equalTo: contentView.rightAnchor , constant: 8).isActive = true

Но проблема в том, что ширина ячейки превышает размер экрана ... У меня никогда не было этой проблемы раньше. Ячейка создается с помощью этого метода:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "slotCell") as! SlotTableViewCell2
    cell.setCellDetail(currentSlot: listaSlots[indexPath.row])

    return cell
}

Что-то не так с ограничениями?

Это изображение текущего результата:

Оранжевый прямоугольник, это testContainerView

1 Ответ

0 голосов
/ 02 сентября 2018

Вы используете неправильную константу для rightAnchor.

Попробуйте следующий код:

contentView.addSubview(testContainerView)
NSLayoutConstraint.activate([
    testContainer.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: 8.0)
    testContainer.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0.0)
    testContainer.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0.0)
    testContainer.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -8.0)
])

Обратите внимание на отрицательную постоянную на rightAnchor.

Дополнительный совет: Механизм Autolayout любит знать обо всех ограничениях, прежде чем активировать их. Использование вышеуказанного метода является предпочтительным способом настройки ограничений

Дополнительная подсказка 2. Если ваше приложение используется любым языковым интерфейсом RightToLeft, оно будет перевернуто. Скорее используйте leadingAnchor & trailingAnchor вместо leftAnchor & rightAnchor, если это не запланированное поведение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...