Iphone 在情节提要中更改视图删除所有视图';s位置

Iphone 在情节提要中更改视图删除所有视图';s位置,iphone,Iphone,我在故事板下发现了奇怪的问题 我已经拖动了UIImageView,它被传递到UIView内部的必要框架中(并且可以返回)。为此,我将UIImageView子类化,并更改了代理内部的框架。如果我不更改当前视图,一切都会正常工作 在视图翻转并返回后,我看到对象处于相同的位置,就像以前没有发生过一样: 我可以在内部存储所有对象的位置,但为什么iOS不保存所有帧更改?切换到其他视图时可能会释放视图,切换回时会重新加载视图。当然,新视图有新的子视图,每个子视图都是根据脚本或.xib文件中的数据定位的

我在故事板下发现了奇怪的问题
我已经拖动了
UIImageView
,它被传递到
UIView
内部的必要框架中(并且可以返回)。为此,我将
UIImageView
子类化,并更改了代理内部的框架。如果我不更改当前视图,一切都会正常工作

在视图翻转并返回后,我看到对象处于相同的位置,就像以前没有发生过一样:


我可以在内部存储所有对象的位置,但为什么iOS不保存所有帧更改?

切换到其他视图时可能会释放视图,切换回时会重新加载视图。当然,新视图有新的子视图,每个子视图都是根据脚本或.xib文件中的数据定位的


iOS开发中的一条基本规则是,您不应该使用视图来存储应用程序状态。如果需要保留视图的位置,则应将这些位置存储在应用程序的模型中。视图控制器应实现
-viewDidLoad
方法,从模型中获取位置并相应地设置子视图。

因此,我必须将当前UIView对象的所有CGpoints存储在例如appdelegate属性中,并在ViewWillExead时调用,还原它?@user170317最好不是直接在应用程序委托的属性中,而是在作为应用程序数据模型的某个不同对象中(尽管应用程序委托引用模型并不少见)。你的应用程序在哪里存储其余的数据?无论在何处存储信息,视图控制器都需要知道如何查找信息。您可以在-viewDidLoad或-viewWillDisplay中设置子视图,两者都可以正常工作。看起来比需要的复杂得多。如果我移动子视图,更好的解决方案将保留位置而不将其移出:)。苹果会注意为我们做更多的编码:)。不管怎样,tnx需要解释。