我正在为iPad构建一个应用程序,包括以编程方式添加UIViews。加载视图时,我可以添加其他UIViews。然而,在UI加载之后,当我尝试以编程方式创建UIView并将其添加到角落时,其他UIViews移位并且视图不会重绘(因此其他UIView和小部件的旧位置/大小是也画了。)
关于我应该做些什么以避免这个问题的任何想法?
编辑:调整给我问题的面板大小的代码是在按下按钮时调用的函数。功能的核心是:
CGRect fooPanelFrame = CGRectMake(fBasePanelWidth,
50,
fBasePanelWidth,
panelHeight);
[_fooPanelView setFrame:fooPanelFrame];
'fooPanelView'的类型为UIView。这是唯一一个在构建完所有内容后调整大小的内容。其他UIViews在'viewDidLayoutSubViews'方法中调整大小(以类似的方式)。
编辑:这是以前用户界面的样子:
这就是重新调整中心框架后的样子:
蓝色只是根UIView的颜色。
需要注意的另一点是,当我记录我正在更改的视图的大小时,在调整大小之前,值是我期望的,但不是之后。在我的测试中,我故意将它设置为全部20秒,但框架的价值回归并非如此。我想知道这是否意味着超级视图中有一些我需要改变的设置......
答案 0 :(得分:0)
所以这似乎是由于我自己的愚蠢。当我按下按钮时,我没有意识到viewDidLayoutSubviews(...)方法再次被调用(我的调整大小是在按钮事件处理程序调用的函数中完成的)。在UIView调整大小的情况下是否有任何设计模式?现在,我正在退出viewDidLayoutSubviews(...)方法,如果绘制了视图,我只是调整大小。