iPhone交换UIView / Sub视图的内容

时间:2010-02-17 02:12:52

标签: iphone objective-c uiview

我正在努力完成以下任务:

使用UIButtons或工具栏交换UIView或Subview的内容。我有一个如下图所示的视图。我想通过单击工具栏上的按钮或按钮来交换“UIView to swap”子视图的内容。因此,您单击按钮1并将视图加载到“UIView to swap”中。这有意义吗?任何人都可以建议任何教程吗?我知道如何用图像做到这一点,但我想交换更复杂的视图。

alt text http://yesimarobot.com/images/swap-uiviews.png

4 个答案:

答案 0 :(得分:2)

你可以很容易地做到这一点。这就是我要做的事情:

1)创建一个UIView来保存交换的视图。它应该是UIView的大小和位置交换你的图片。我将它称为容器。

2)构建你想要交换的四个UIView。把它们放在NSArray中。我将其称为viewArray

3)将您的按钮挂到IBAction方法。此方法应该找出按下的按钮的索引(按名称或标记),删除所有容器的子视图,将子视图[viewArray objectAtIndex:myIndexFromButton]添加到容器中。

4)你已经完成了。显然,您可以根据需要创建视图,而不是根据需要缓存它们,但这是一般的想法。

答案 1 :(得分:1)

您应该做的是创建一个容器视图,并将所有图像视图添加为子视图,但将其隐藏属性设置为true,除了您要首先显示的属性。

创建具有所需动画的CATransition(例如淡入淡出,按下,移动等)。将转换添加到容器视图的图层。

然后,要显示不同的视图,只需切换两个子视图的隐藏属性,转换将为您设置更改动画。

CATransition看起来像这样:

// Create a transition
CATransition *transition = [CATransition animation];
transition.duration = 0.25f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromRight;
transition.delegate = self; 

// Add the transition to the content view's layer
[self.view.layer addAnimation:transition forKey:nil];

答案 2 :(得分:0)

有道理。使用UIView的{​​{1}}方法做到这一点怎么样?

如果你的观点不是很重,那么你也可以简单地在超级视图中保留所有4个,只需隐藏/显示相应的视图。

答案 3 :(得分:0)

上面的答案可行,但拥有4个视图控制器而不是4个视图更为优雅。这使您可以选择仅在调用它们时生成实际视图,并在设备内存不足的情况下删除(卸载)一些隐藏的视图。

(你基本上重新发明了苹果的UITabBarController,那个也使用了viewcontrollers)