导航栏和它的titleView rightBarButtonItem随着动画变得更小

Posted

技术标签:

【中文标题】导航栏和它的titleView rightBarButtonItem随着动画变得更小【英文标题】:navigationBar and it's titleView rightBarButtonItem became smaller with animation 【发布时间】:2013-12-31 07:12:50 【问题描述】:

在正常状态下,用户界面就像跟随

当 tableview 向上滑动时,我希望导航栏变小并带有动画。 像follow这样的代码

CABasicAnimation *shake = [CABasicAnimation animationWithKeyPath:@"transform"];
shake.duration = DURATION_TIME;

shake.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0 ,1.0)];
shake.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 0.5, 1.0)];

shake.removedOnCompletion = NO;
shake.fillMode = kCAFillModeForwards;

[self.navigationController.navigationBar.layer addAnimation:shake forKey:@"shakeAnimation"];

动画UI后喜欢关注

我不想改变导航栏的 y 位置。而titleView和rightbarItem变平了,如何避免变平呢?

【问题讨论】:

你能告诉我你想要什么吗?你想让navigationBar的高度减半而y位置不变吗? @KudoCC 是的,你说的是我想要的,我也希望 titleview 不会只改变平面比例。 【参考方案1】:

试试下面的代码。它在ios7之前工作

UIView * testView = self.navigationController.navigationBar ;
CGRect frame = testView.layer.frame ;
testView.layer.anchorPoint = CGPointMake(0.5f, 0.0f) ;
testView.layer.frame = frame ;

[UIView animateWithDuration:1.0 animations:^
    CABasicAnimation *shake = [CABasicAnimation animationWithKeyPath:@"transform"];
    shake.duration = 1.0;

    shake.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0 ,1.0)];
    shake.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 0.5, 1.0)];

    shake.removedOnCompletion = NO;
    shake.fillMode = kCAFillModeForwards;

    [testView.layer addAnimation:shake forKey:@"shakeAnimation"];
];

【讨论】:

先谢谢你。我试过你的代码,但titleview有明显的跳跃,它也变平了。 @Dracuuula 我已经编辑了我的答案,但我很困惑你为什么想要这个。 我认为 OP 正在尝试模拟 iOS 7 中 Safari 的行为,其中导航栏在滚动过程中会增大和缩小。 @AaronBrager 如果是这样,我认为他最好使用自定义UIView 而不是UINavigationBar @KudoCC 在我尝试了一些方法之后,自定义 UIView 而不是 UINavigationBar 是最好的

以上是关于导航栏和它的titleView rightBarButtonItem随着动画变得更小的主要内容,如果未能解决你的问题,请参考以下文章

UINavigation titleView 错误

viewController.titleView 全宽在过渡时闪烁

隐藏导航栏和标签栏后 UICollectionView 框架发生变化

操作栏和导航抽屉 - 使用 Activity/Fragment 滑动操作栏

手动设置导航Item的titleView不垂直对齐

如何修复titleView在过渡期间被隐藏到导航栏?