Изначально непрокручиваемый scrollView?

Поскольку у меня есть представление прокрутки, я установил для своего контроллера представления произвольную форму с фиксированным размером (поскольку это то, что я узнал). Я хочу, чтобы мой вид прокрутки начинался с того же размера содержимого и прокручиваемого размера (чтобы изначально вы не могли прокручивать), а затем после нажатия кнопок высота прокрутки увеличивалась, чтобы вы могли прокручивать. Я протестировал все это на симуляторе модели iPhone Xr, и все работало хорошо, пока я не попытался переключиться на другую модель iPhone (iPhone 7+). Когда я тестировал свою программу с 7+ (которая короче по высоте), scrollView изначально был прокручиваемым (чего он не должен был делать), и я думаю, что это может быть потому, что я установил свой контроллер представления на свободную форму с фиксированным размер (который подходит для модели iPhone Xr, которая выше), поэтому, когда я пытаюсь использовать модель iPhone меньшего размера, она по-прежнему имеет ту же большую длину, поэтому изначально ее можно прокручивать.

Я хочу, чтобы мой scrollView перешел от верхней части экрана iPhone примерно на полпути, x над кнопкой, которая у меня есть. То, что у меня было изначально, было:

scrollView.contentSize.height = 404

Теперь я знаю, что это совершенно неправильно, так как я жестко кодировал его, но я не знаю, как еще я могу найти высоту от верхней части экрана iPhone до кнопки. Возможно, это что-то вроде:

scrollView.contentSize.height = button.frame.origin.y - /*y position of top of iPhone screen*/

Я также считал, что высота scrollView может быть просто положением кнопки y, поскольку у меня есть фиксированная высота контроллера представления для iPhone с меньшими дисплеями, что сделало бы scrollView намного больше, чем я хочу (размер так что вы изначально не можете прокручивать).

Надеюсь, это имеет смысл, спасибо.

Image that may help explain

По сути, я хочу найти способ сделать scrollView, который изначально не прокручивается (идеально подходит) независимо от модели iPhone.

Ken 22.05.2019 13:03

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

Lu_ 22.05.2019 13:15

Но мой View Controller имеет свободную форму, поэтому его нельзя будет исправить (независимо от модели iPhone)? Размер View Controller не изменится при изменении модели iPhone (?)

Ken 22.05.2019 13:20

у всего есть свои пределы, сделайте размер UIScreen.main.bounds тогда

Lu_ 22.05.2019 13:21

@Ken - ваш вопрос не очень ясен ... Вы хотите, чтобы ваша «клавиатура» (средне-серый прямоугольник) была фиксированного размера, а прокрутка над ней растягивалась до верхней части представления? Или клавиатура также внутри scrollView?

DonMag 22.05.2019 14:16

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

Ken 22.05.2019 16:19
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
6
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как получить размер экрана:

let screenFrame = UIScreen.main.bounds   // returns a CGRect

let screenHeight = screenFrame.height    // returns a CGFloat

Редактировать: Если вы пытаетесь полностью использовать раскадровку, попробуйте установить необходимые ограничения от scrollView до view, чтобы получить то, что вы хотите.

Тогда высота contentView внутри scrollView может быть установлена ​​равной высоте scrollView, но с низким приоритетом.

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

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

Похожие вопросы

Есть ли какая-либо функция для определения момента закрытия приложения на панели многозадачности, когда состояние приложения приостановлено?
Установка шрифта в html для текста с атрибутом UILabel не работает
IOS Firebase CrashlyticsKit не устанавливает идентификатор пользователя
Как я могу заставить AutoLayout сбой моего приложения, когда он регистрирует неудовлетворительные ограничения в консоли отладки?
Загрузить три xib в UITableView при нажатии трех разных кнопок
Кнопка в представлении коллекции (UPCarouselFlowLayout) не получает событие onclick
Контроллер поиска в элементе навигации показывает черную полосу
Попытка отобразить имена пользователей моих пользователей из FirebaseStorage
Мне нужно время от времени обновлять TableView, но при этом дублируются ячейки
Возникли проблемы с «достижением» моей функции подготовки переопределения для программного изменения представлений в контроллере панели вкладок.