UINavigationController动画视图但不是标题

时间:2011-05-06 15:06:57

标签: iphone uinavigationcontroller core-animation

有没有办法在没有标题动画的情况下转换导航控制器中的视图?

我正在创建一个询问用户问题的应用,当他们点击下一个新问题被推送到NavigationStack并进行动画制作时。但标题栏也是动画的。标题栏上的标题没有改变,有没有办法阻止标题栏动画?

由于

4 个答案:

答案 0 :(得分:0)

您可以使用分页UIScrollView代替UINavigationController。在IB中设置您的视图,在视图顶部UINavigationBar,在UIScrollview下方放置您的视图,让用户以这种方式滚动您的问题。

答案 1 :(得分:0)

你可以用以下方式停止动画:

// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:NO];

并确保将推送视图控制器的标题设置为(相同)正确的标题;例如在详细视图控制器的viewDidLoad方法中执行:

self.title = @"title";

现在,您可以向详细视图控制器自定义类添加自定义initWithTitle:方法,以传入标题需要更改时设置的标题,而不是您在问题中提到的标题。

希望这有帮助。

答案 2 :(得分:0)

我有同样的问题(在我的情况下,我在每个孩子中都有相同的标题,我添加到导航控制器,所以动画标题看起来很有趣)

我通过直接在导航控制器中添加标题,并将子控制器的标题设置为nil

来解决这个问题
UINavigationController *nav_controller;

UILabel *lbl_title = [[UILabel alloc] initWithFrame:...]
// Modify your title here

[nav_controller.view addSubview:lbl_title];

UIViewController *vc_child;
vc_child.title = nil;

答案 3 :(得分:0)

我不认为这个问题有任何直接的解决方案。但我觉得这是可以实现的。您可以拥有一个导航控制器。当您从导航控制器推送下一个视图时,您可能需要避开一些自定义动画。

我认为你可以做的是,你可以在

的框架中将下一个视图添加为子视图
x = 350( anything beyond the view frame i.e 320, assuming iphone) , 
y = 0 , 
width = 320 and 
height = view height - 20 (20 is the height of navigation bar)

您可以将下一个视图作为子视图添加到现有导航控制器,而不是从导航控制器推送视图,并在将x值从350更改为0时为视图提供一些自定义动画。

这似乎是在推动视图,但您只是通过添加子视图来创建它的效果。

希望这可以为您的解决方案提供方法。