导航栏和它的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随着动画变得更小的主要内容,如果未能解决你的问题,请参考以下文章
viewController.titleView 全宽在过渡时闪烁
隐藏导航栏和标签栏后 UICollectionView 框架发生变化