You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UITableViewCell复用时内容下移无法适配cell高度是什么原因?

该问题的常见成因如下
  • 动态高度缓存不匹配
    你使用动态高度Cell时,UITableView 默认会缓存已计算过的 Cell 高度值。页面 push/pop 返回后,TableView 会优先读取旧缓存高度赋值给刚进入可视区域的Cell,但你代码动态往 StackView 中添加视图的逻辑会改变Cell实际内容高度,旧缓存高度和实际内容高度不匹配时,StackView 会根据自身约束配置自动填充多余空间,最终呈现为内容整体向下偏移。
  • Cell复用状态未重置
    你没有在自定义Cell的prepareForReuse方法中清理之前代码添加到StackView里的视图和相关约束,Cell被复用时旧视图残留,和新添加的视图叠加,导致StackView的内容尺寸计算错误,最终出现偏移。
  • 滚动视图内边距自动调整干扰
    如果你的ViewController没有关闭automaticallyAdjustsScrollViewInsets(iOS10及以下)或UIScrollView的contentInsetAdjustmentBehavior(iOS11及以上),页面返回时系统会自动重新计算TableView的contentInset,刚进入可视区域的第一个Cell会把调整后的内边距算入布局,内容向下偏移对应状态栏/导航栏的高度。
  • StackView配置错误
    如果你的嵌套StackView的distribution、alignment属性设置为填充类值,且没有给StackView添加上下约束贴紧Cell的contentView,当Cell高度大于StackView实际内容高度时,StackView会自动在顶部生成空白填充,视觉上就是内容向下偏移。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:45:03