Я хочу, чтобы 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;
Расскажи как дела:)