Xcution
V2EX  ›  Apple

请问一个 IOS 开发的问题,动态修改 PageViewController 的高度( Swift 开发)或者 PageViewController 如何根据每一页的内容高度自动变化

  •  
  •   Xcution · Feb 20, 2021 · 2534 views
    This topic created in 2083 days ago, the information mentioned may be changed or developed.
    我使用 PageViewController,但是 PageViewController 又不能直接到屏幕底部,它的下方还要显示其他内容,由于每一页内容高度不相同,如果我直接定死高度的话,要么会遮挡要么就是会显示多余的空白内容,我就想在滑动的时候根据内容的高度动态修改 PageViewController 的高度,但是设置好像不行,永远都是显示的第一次显示的高度。我又不知道我这种写法到底对不对,按理说 PageViewController 的高度会根据内容自动适应应该才是最好的,但是我找了很久都没找到,就只有想自己动态设置高度,但是好像还是不行,因为刚刚接触 IOS 开发,对这个内容自适应这块有点蒙,安卓的话直接一个属性就搞定了,好像 IOS 也没有,头疼,这问题搞了几天了,还是没法解决,求各位大佬指点一下
    massacreformash
    massacreformash
    Feb 20, 2021
    1
    PageViewController 的坑太多了,一般都是考虑自己造个轮子来用
    好久不做 iOS 了,我记得应该是用 UIScrollView 套 UIScrollView 就可以实现,算好各种 Offset 就可以了
    这样的话,可以自己在点击切换 page 的时候,各种魔改想要的效果
    Xcution
    Xcution
    OP
    Feb 20, 2021
    2
    @massacreformash 使用 UIScrollView 确实也可以实现 PageViewController 的功能,就想着有了现成的了,就没有自己再写了
    massacreformash
    massacreformash
    Feb 20, 2021
    3
    @Xcution 我有点儿忘了在 iOS 的哪个版本里面 PageViewController 有坑了,会在特定情况下丢 ViewController 的引用导致崩溃,而且一直没修复。不知道现在修了没有。
    我个人还是建议弄个自定义的
    CommandZi
    CommandZi
    Feb 20, 2021
    4
    不太明白你说的效果,按理说 Autolayout 已经能实现自适应
    Building
    Building
    Feb 20, 2021 via iPhone
    5
    一般来说官方提供的控件,就是这么死板的。
    ai277014717
    ai277014717
    Feb 20, 2021
    6
    看了下文档。PageViewController delegate 中没有调节 height 的函数。可以通过动态的修改 PageViewController 中 view 的 height 或者相关约束来达到目的。
    leon0918
    leon0918
    Feb 20, 2021
    7
    用代理自己算高度,赋值。是很麻烦的,先找找 github,不行自己封装一个。
    ihwbunny
    ihwbunny
    Feb 20, 2021
    8
    这种纯技术的讨论,给坛子增辉不少
    JHExp
    JHExp
    Feb 20, 2021
    9
    你的每一页内容都是 uiscrollview 的子类的话 固定高度也能滑啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1588 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 23:08 · PVG 07:08 · LAX 15:08 · JFK 18:08
    ♥ Do have faith in what you're doing.