Я хочу, чтобы UITableView внутри UIScrollView простирался до нижней части UIScrollView и не был обрезан на начальном экране

Поэтому у меня есть view-контроллер, в который я помещаю представление прокрутки. Внутри просмотра прокрутки я помещаю кучу элементов в верхнюю часть, например, изображение, метки и кнопки. На нижнюю половину я поставил uitableview. Я установил все ограничения и все. Я использовал следующий код:

let bounds: CGRect = UIScreen.main.bounds
let w:Int  = Int(bounds.size.width)
let h:Int = Int(chaptersTableView.contentSize.height)
let temp: Int = 300 + h
scrollView.contentSize = CGSize(width: w, height: temp)
chaptersTableView.frame = CGRect (x: 0, y: 280.5, width: self.view.frame.size.width, height: CGFloat(44 * sampleModel.objectChapterList.count))

Я хотел установить размер содержимого прокрутки, а затем установить высоту моего фрейма просмотра таблицы.

Предполагается, что табличное представление содержит много элементов, поэтому я хочу, чтобы пользователь мог прокручивать вниз, а все содержимое прокручиваемого представления - прокручивать вниз, чтобы показать больше табличного представления. Однако представление таблицы всегда обрезается, и когда я прокручиваю вниз в представлении прокрутки, таблица заканчивается. Я должен прокрутить внутри таблицы, чтобы получить доступ к большему количеству ячеек.

Даже если я заменим "44 * (количество ячеек в моей таблице)" на случайное число, например, 100, оно сначала обрежет таблицу, так что она будет короткой, но затем, когда я коснусь экрана, таблица изменится возобновить полную длину до нижней части экрана (но не до нижней части прокрутки).

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

Если вам нужны фотографии или что-то, я могу предоставить их. Если мне неясно, обязательно прокомментируйте, и я смогу объяснить лучше.

5 ответов

Решение

Я предлагаю вам использовать только tableView. Вы можете создать свой вид сверху в заголовке tableView. При этом не будет необходимости поддерживать размер содержимого scrollView.

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

Я думаю, вы должны сделать это:

сначала: (см. https://forums.developer.apple.com/thread/81895)

tableView.estimatedRowHeight = 0 tableView.estimatedSectionHeaderHeight = 0 tableView.estimatedSectionFooterHeight = 0 tableView.rowHeight = 70

затем

tableView.frame.size.height = tableView.contentSize.height

Согласно руководящим принципам Apple, таблица не должна быть добавлена ​​в scrollView. Приложение может быть отклонено яблоком.

Tableview является подклассом scrollView, но добавление scrollview для другого запрещено. Вместо этого: 1. вы можете создать собственное представление, 2. добавить все свои элементы пользовательского интерфейса в ваше настраиваемое представление, 3. добавить это настраиваемое представление в заголовок tableView.

надеюсь это поможет.

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

Если вы уже рассчитали размер содержимого и задали размер фрейма таблицы, возможно, вы можете попытаться отключить свойство scroll представления таблицы, используя следующий код:

tableView.scrollEnabled = NO;

Расскажи как дела:)

Другие вопросы по тегам