Cocoa touch UINavigationController上的自定义标题视图动画设置不正确

Cocoa touch UINavigationController上的自定义标题视图动画设置不正确,cocoa-touch,animation,uinavigationcontroller,titleview,Cocoa Touch,Animation,Uinavigationcontroller,Titleview,我可能做错了什么,因为这看起来有点愚蠢。 我正在我的UINavigationController上设置一个自定义标题视图(以UILabel的形式),它在每一页上都是相同的。为了方便起见,我在我的应用程序委托中创建了一个函数来正确显示标签。然后,在将此函数推送到导航堆栈后,我会在任何子视图上调用此函数。 下面是代码(可能比我的解释更有意义): 我的问题是,当我将下一个视图控制器推到堆栈上,并且新控制器平滑地滑动时,在动画的整个过程中,标签会粘在左上角,然后在动画完成后最终捕捉到位。它看起来真的很奇

我可能做错了什么,因为这看起来有点愚蠢。
我正在我的UINavigationController上设置一个自定义标题视图(以UILabel的形式),它在每一页上都是相同的。为了方便起见,我在我的应用程序委托中创建了一个函数来正确显示标签。然后,在将此函数推送到导航堆栈后,我会在任何子视图上调用此函数。
下面是代码(可能比我的解释更有意义):

我的问题是,当我将下一个视图控制器推到堆栈上,并且新控制器平滑地滑动时,在动画的整个过程中,标签会粘在左上角,然后在动画完成后最终捕捉到位。它看起来真的很奇怪很难看。
如何正确设置标签,使其从下一个视图平滑滑动?当然我错过了一些简单的东西

我最后做的是使用包含文本的图像作为标题的背景,因此,它没有像我最初希望的那样平滑地设置动画,而是根本没有设置动画。

考虑到每个地方都是同一个标题,这没什么大不了的。

这个问题的答案很晚,但我只是遇到了同样的问题,找到了另一种解决方法,没有使用图像。我想我会分享我的解决方案,因为它可能会帮助别人

在我的例子中,我将自定义UILabel设置为titleview,并且我意识到只有在viewDidLoad方法中设置titleview属性时,它才会正确地设置动画。但是,在某些情况下,我还不知道viewDidLoad中的标题(例如,在某些情况下,我需要使用http请求中的标题)。因此,对于这些情况,我的解决方案是在viewDidLoad中将titleview属性设置为我的customlabel,并在viewDidLoad中使用文本@“”,每当我获得真实标题时,我只更改我的自定义标签的文本属性

- (void)viewDidLoad {
   [super viewDidLoad];
   // Do any additional setup after loading the view from its nib.

   //set temporary title, the MBMUINavigationBarTitleView is a UIView subclass whose  viewWithTitle method returns an autoreleased UIlabel with my custom settings, custom font etc.
   self.navigationItem.titleView = [MBMUINavigationBarTitleView viewWithTitle:@" "];
}

//somewhere later, when I have the real title
UILabel* titleLabel = (UILabel*)self.navigationItem.titleView;
[titleLabel setText:theRealTitle];

我的情况与ylva类似,为
UINavigationItem的
titleView
属性使用自定义文本类的实例。但是,我发现在
viewDidLoad
中配置它并没有解决动画问题

我解决这个问题的方法是等到有问题的视图控制器从导航控制器的堆栈中弹出,然后删除
UINavigationItem的
custom
titleView
,这样它就不需要设置动画了


当我的
UINavigationController
子类收到
popViewControllerAnimated:
消息时,我将标题文本从自定义文本字段(
UINavigationItem的
titleView
)复制到
UINavigationItem的
title
属性中,并将
titleView
属性设置为零。然后,
UINavigationController
继续并弹出视图控制器,只有标准导航栏标题标签是动画的(不是我的自定义标题),无故障。

标题标签是否自行调整大小?如果我没记错的话,我有一个函数可以在文本更改时调整标签大小。
- (void)viewDidLoad {
   [super viewDidLoad];
   // Do any additional setup after loading the view from its nib.

   //set temporary title, the MBMUINavigationBarTitleView is a UIView subclass whose  viewWithTitle method returns an autoreleased UIlabel with my custom settings, custom font etc.
   self.navigationItem.titleView = [MBMUINavigationBarTitleView viewWithTitle:@" "];
}

//somewhere later, when I have the real title
UILabel* titleLabel = (UILabel*)self.navigationItem.titleView;
[titleLabel setText:theRealTitle];