Автоматическая компоновка раскадровки помещает представление в ячейку таблицы с фиксированным ограничением перехода к просмотру в крайнем левом углу

#ios #uitableview #autolayout #storyboard

#iOS #uitableview uitableview #автозаполнение #раскадровка

Вопрос:

Я поместил знак UIImageView в правой части ячейки табличного представления и добавил конечное ограничение к ячейке 20.

Тем не менее, изображение заканчивается полностью в левой части ячейки, когда я запускаю приложение.

Мой код контроллера представления таблицы очень простой:

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let cell = tableView.dequeueReusableCell(withIdentifier: "SailboatCell", for: indexPath) as! SailboatTableViewCell

    return cell
}
 

Идентификатор правильный, и я также установил класс ячейки.

Я много занимался автоматической версткой и понятия не имею, чего мне здесь может не хватать.

На устройстве изображения находятся с правой стороны при запуске приложения, но оказываются слева во вновь созданных ячейках, когда я начинаю прокрутку. Все немного сбрасывается, когда я перевожу устройство в альбомную, а затем снова в портретную ориентацию.

Предупреждения об автоматической компоновке не печатаются.

Ранее у меня были другие элементы пользовательского интерфейса в ячейке, которые были красиво расположены (слева направо), как и ожидалось. Только вид изображения вел себя странно. Я удалил все остальные элементы пользовательского интерфейса, чтобы избежать каких-либо помех.

введите описание изображения здесь

РЕДАКТИРОВАТЬ: я воссоздал ячейку, и все в порядке. Понятия не имею, что это было.

Комментарии:

1. Основываясь на опубликованном вами изображении симулятора, похоже, что вы получаете ячейку по умолчанию вместо своей пользовательской ячейки. Я говорю это потому, что разделительная строка имеет отступ по ширине вашего изображения, чего не происходит, если вы используете пользовательскую ячейку. Является ли это табличным представлением в качестве подвида? Или это контроллер табличного представления? В любом случае попробуйте удалить контроллер и начать все сначала с нового.

Ответ №1:

Это может быть связано с тем, что вы установили semanticContentAttribute значение .forceRightToLeft для ячейки или UIView.appearance() .

Согласно документу Apple для semanticContentAttribute:

Семантическое описание содержимого представления, используемое для определения того, следует ли переворачивать представление при переключении между макетами слева направо и справа налево.

Комментарии:

1. Объясните, почему макет подходит для первых отображаемых ячеек на устройстве. (Кроме того, я проверил, и я случайно не установил семантику.)

2. @значение-вопросы, похоже, вы недостаточно дружелюбны с человеком, который вам помогает. Как он может объяснить, если вы даже не предоставили достаточно информации? Должны ли вы сначала предоставить больше кода?

3. @trungduc Больше нет кода, и этот ответ не охватывал все детали, которые я предоставил. Я переспросил 4 часа назад и жду его ответа.