目标C -隐藏多个UI元素



我有一个由两个视图控制器组成的应用程序,一个控制器是显示所有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是一个可动画属性。

相关内容

  • 没有找到相关文章

最新更新