Смещение содержимого UIScrollView изменяется в зависимости от размера экрана iphone

#ios #swift #xcode #uikit

#iOS #swift #xcode #uikit

Вопрос:

Мое поле UIScrollView.contentOffset.y очень противоречиво при использовании iPhone разного размера. По какой-то причине, когда я использую экраны разного размера, смещение содержимого меняется. На всех экранах у меня есть UIView, который ПОСЛЕДОВАТЕЛЬНО размещается на y = 331,5 (хотя на самом деле он больше похож на 578, потому что моя панель навигации имеет высоту 148,0, поэтому 331,5 148,0 = 579,5).

Однако, когда я использую экраны разного размера, всегда есть другой contentOffset.переменная y. Ниже приведен ScrollView.contentOffset .значения y для разных экранов при прокрутке и размещении моего UIView в верхней части каждого экрана, прямо под панелью навигации.

  • iPhone 12 Max: 550.0
  • iPhone 12: 520.0
  • iPhone 11: 538,0
  • iPhone 8: 490.0
  • iPod (7-го поколения): 455

Я понятия не имею, почему это происходит, и это очень расстраивает, потому что я пытаюсь использовать этот UIView (который, как я уже сказал, ВСЕГДА находится в y = 331,5 независимо от размера экрана), «придерживаться» панели навигации и прокручивать мой экран после прокрутки мимо него. Однако я явно не могу этого сделать, если у меня нет точной ссылки на то, где прокручивался мой UIScrollView.

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

Кто-нибудь знает какие-либо другие переменные UIScrollView, которые я мог бы использовать для этого или любого другого способа исправить это?

Спасибо!

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

1. Из того, что вы описали, contentOffset . похоже, y работает так, как должно. Чего именно вы пытаетесь достичь? Возможно, более подробная информация о том, чего вы пытаетесь достичь, может облегчить кому-то поиск лучшего подхода

2. Вы пытались настроить поведение contentinsetadjustmentview в UIScrollView?

3. Привет! Я думаю, вы можете попытаться не изменять contentOffset, а вместо этого установить ограничения для ScrollView.