我有一个由两个视图控制器组成的应用程序,一个控制器是显示所有UI元素的主屏幕,另一个控制器处理主控制器上的UI元素。
目前我有很多语句喜欢隐藏/显示某些元素,这取决于用户想要显示什么。
label.hidden = TRUE;
label2.hidden = TRUE;
label3.hidden = FALSE;
显然,实际的应用程序要比这大得多,并且有更多的语句。
我想知道是否有更好的方法来做到这一点?
我在想一个单独的UIView为每个可能的主屏幕变化。然后根据要显示的元素显示一个UIView。这是正确的吗?
谢谢
我认为你甚至应该创建多个viewControllers
你建议的父UIView可能是最好的选择,在保持层次结构明显和可编辑的界面生成器(或Xcode 4类似物)。
另一种方法是将所有想要切换的视图放到一个数组中,然后执行:
[arrayOfViews makeObjectsPerformSelector:@selector(setHidden:)
withObject:[NSNumber numberWithBool:YES]];
它的作用是隐藏数组中的每个视图。
在我的应用程序中,我倾向于有一些视图组,我可以移动或隐藏/显示在一起,在这种情况下,我收集他们在一个单一的父视图,一些移动或隐藏/显示单独,在这种情况下,我显然把他们单独对待,和一些是如此不同,从一个方向到另一个,我保持交替你的建议。
稍微偏离主题,如果你为不同的方向做不同的视图,你可能更好地实现这样的:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
{
if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
{
portraitView.alpha = 1.0f;
landscapeView.alpha = 0.0f;
}
else
{
portraitView.alpha = 0.0f;
landscapeView.alpha = 1.0f;
}
}
这将在两个视图之间提供一种交叉渐变,作为旋转动画的一部分,因为CoreAnimation块会自动排列在willAnimateRotationToInterfaceOrientation:duration:和alpha是一个可动画属性。