Сцена мне нужна для реализации прикрепленной картинки.
Когда я пытаюсь реализовать нижнюю форму, я сталкиваюсь с некоторыми проблемами.
Нижняя форма имеет следующие требования:
2 верхние строчки должны прилипать к голове и не позволять прокручиваться вверх / вниз. Для реализации я использую головку секции таблицы.
все остальные строки можно прокручивать вверх / вниз и нажимать. Я использую табличное представление для реализации
, так как приложение поддерживает больший текст, когда текст больше, размер экрана не может отображать весь tableView, поэтому в этом случае весь просмотр таблицы должен поддерживать горизонтальную прокрутку.
, когда данные строки представления таблицы отличаются от «currentBitting», который имеет значение «33342431», на отдельной метке должен отображаться цвет фона.
каждый столбец должен быть выровнен для таблицы
Ниже приводится идея, как я реализую:
Чтобы выполнить все эти требования, я использую tableView для реализации. Каждый символ в элементе массива использует метку для отображения.
Я использую максимальную ширину и обычную ширину для определения ширины каждого столбца
Когда размер шрифта текста изменяется, я пытаюсь установить нижний tableView
contentSize = текущий новый размер контента в "viewWillLayoutSubViews ()"
Я добавляю цвет фона для заголовка раздела, в противном случае, когда нижний вид таблицы прокручивается вверх, он перекрывает заголовок раздела, а цвет фона закадрового текста не отображается. Поэтому я добавил цвет фона раздела, чтобы избежать этой проблемы.
В настоящее время проблема в том, что горизонтальная прокрутка не работает. Очень странно.
Если честно, я пробовал довольно много способов:
- Нижняя форма сначала использует родительский scrollView, затем помещает вложенный tableView. Проблема: верхний колонтитул плохо прилипает или вертикальная прокрутка не такая гладкая. Я вставил свою часть scrollViewDidScroll. Оно работает. Но вертикальная прокрутка не так гладко. Если кто-то может помочь улучшить его, я буду очень признателен.
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let recognizer = scrollView.panGestureRecognizer
let distance = recognizer.translation(in: scrollView)
let deltaHeight:CGFloat = parentScrollView.contentSize.height - parentScrollView.frame.height
let goingUp = distance.y < 0 //going up
if distance.y != 0 {
if goingUp {
parentScrollView.contentOffset.y = 0
switch recognizer.state {
case .began,.changed:
if bottomTableview.contentOffset.y < deltaHeight {
bottomTableview.contentOffset.y -= distance.y
recognizer.setTranslation(.zero, in: scrollView)
}
case .ended:
if bottomTableview.contentOffset.y > deltaHeight{
bottomTableview.contentOffset.y = deltaHeight
UIView.animate(withDuration: 0.1, animations: {
scrollView.layoutIfNeeded()
})
}
default:
break
}
}
else{
switch recognizer.state {
case .began,.changed:
if bottomTableview.contentOffset.y > 0 {
bottomTableview.contentOffset.y -= distance.y
recognizer.setTranslation(.zero, in: scrollView)
}
case .ended:
if bottomTableview.contentOffset.y < 0 {
bottomTableview.contentOffset.y = 0
UIView.animate(withDuration: 0.1, animations: {
scrollView.layoutIfNeeded()
})
}
default:
break
}
}
}
}
- Сборник для реализации. Но я не знаю, как выбрать целую строку для получения данных и как вставить верхний заголовок
У кого-нибудь есть идея лучше реализовать этот случай? Очень признателен за вашу помощь.
Данные для использования в табличном представлении:
let extensionCodeArray = ["Position", "Current Bitting", "11407", "10253", "10492", "14195", "11665", "10547", "12332", "12536", "10211", "11034", "10725", "11036", "12928"]
let extensionResultBitting = ["12345678", "33342431", "33133244", "33243134", "32343134", "33134243", "31343234", "33342134", "31344233", "34342133", "31334342", "33134342", "34343132", "34231343", "32431343"]