最近在学习 iOS 开发(Swift),遇到这样一个问题,这里简单记录一下解决方案,希望对有同样问题的同学有所帮助,因为我 Google 了很久也没有找到合适的答案,所以觉得有必要把它记录下来。

问题是这样的,我有两个视图,姑且把它们称为A和B,在初始化的时候,屏幕里只显示A,而B我设置了约束,让它在屏幕之外,底部有三个TabBarItem,对应的操作分别是,显示视图A、往B视图添加子视图、显示视图B

显示A视图和B视图这两个操作都没问题,但当我往B视图添加子视图且给子视图添加约束的时候,如果我当前的视图是B,但会遇到一个奇怪的问题就是在添加完子视图后B视图会回到原位。

问题的原因是视图A、B的切换是通过改变 frame.origin.x 实现的,但当我给B视图添加子视图并添加约束的时候,不知为何这个 frame 会重置,网上找了很久也没有找到答案,我最终的解决办法是通过改变视图的约束来实现视图A、B的切换效果。

Categorized in: