Ответ 1
Это поведение по дизайну.
Самый простой способ получить нужное поведение - установить пустой аксессуар на каждую ячейку, которая перемещает все содержимое слева на такое же расстояние, что и галочка.
У меня есть пользовательский UITableViewCell
и управлять выбором моих ячеек. Когда ячейка выбрана и отображается галочка, ширина ячейки Content View
уменьшается, а мои метки с конечными ограничениями перемещаются влево. Как я могу эффективно избежать перемещения контента?
Я не хотел устанавливать ограничения для ведения, поскольку у меня гибкая ширина таблицы, и они выравниваются по правому краю. Когда я хочу обновить ограничения меток в коде через IBOutlets
, я столкнулся с проблемой, поскольку возвращаю несколько подклассов UITableViewCell
в cellForRow:
, и я получил нераспознанную ошибку выбора в didSelectRowAtIndexPath:
при попытке установить ограничения в коде. Любое элегантное решение? Спасибо.
Это поведение по дизайну.
Самый простой способ получить нужное поведение - установить пустой аксессуар на каждую ячейку, которая перемещает все содержимое слева на такое же расстояние, что и галочка.
У меня была аналогичная (на самом деле, точная) проблема, когда галочка выталкивала все влево.
- EDIT:
Через несколько часов после моего первоначального ответа я понял, что это очень простая проблема.
Это нажатие влево - это ограничение, нажимающее contentView ячейки. Так?
Соедините ограничение с элементом справа (например, кнопкой i), самой ячейкой, а не ее содержимым.
- Оригинальный ответ (фактический ответ сверху, это для записи):
Я только что понял там очень простое решение. У меня была кнопка, которая была нажата налево, когда галочка была включена, и мне пришлось удерживать ограничение, чтобы держать ее на месте (так что "снять флажок" не будет перемещать кнопку вправо). Это была жесткая "ширина" справа и в целом только плохая практика. Неважно, что я не мог "получить" эту галочку "ширина", чтобы сделать это динамически.
Решение
Удерживайте ограничение слева.
Что это. У меня тоже есть ярлык, поэтому в моем случае: ограничение от кнопки слева до метки (чтобы они не перекрывались) и из содержимого слева налево. В принципе, все, что движется справа, действительно не "достигает" левой стороны (скорее всего, все "сидит" справа).
Как насчет того, чтобы постоянно ставить галочку и просто играть с альфа/прозрачностью?
if checked
{
cell.accessoryType = .checkmark
cell.tintColor = cell.tintColor.withAlphaComponent(1)
}
else
{
cell.accessoryType = .checkmark
cell.tintColor = cell.tintColor.withAlphaComponent(0)
}