ios7 – 在iOS 7中动画化UINavigationBar(如Safari)

前端之家收集整理的这篇文章主要介绍了ios7 – 在iOS 7中动画化UINavigationBar(如Safari)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当在Safari中滚动内容时,标题栏将动画为较小版本的自身.实现这一点的最好方法是什么?

目前,我正在改变框架的大小:

  1. - (void)scrollViewDidScroll:(UIScrollView *)scrollView
  2. {
  3. //
  4. // Table view
  5. //
  6. CGFloat currentPosition = scrollView.contentOffset.y - CGRectGetHeight(self.tableView.tableHeaderView.frame) + CGRectGetHeight(self.navigationController.navigationBar.frame) + CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]);
  7.  
  8. if ([scrollView isKindOfClass:[HeadlinesHeadlinesTableView class]]) {
  9. ScrollDirection scrollDirection;
  10.  
  11. if (self.lastContentOffset > scrollView.contentOffset.y) {
  12. scrollDirection = ScrollDirectionDown;
  13. } else if (self.lastContentOffset < scrollView.contentOffset.y) {
  14. scrollDirection = ScrollDirectionUp;
  15. }
  16.  
  17. self.lastContentOffset = scrollView.contentOffset.y;
  18.  
  19. CGRect frame = self.navigationController.navigationBar.frame;
  20. CGFloat minimumFrameHeight = 30.0f;
  21. CGFloat maximumFrameHeight = 44.0f;
  22.  
  23. CGFloat titleSize = [[self.navigationController.navigationBar.titleTextAttributes objectForKey:NSFontAttributeName] pointSize];
  24. CGFloat minimumTitleHeight = 22.0f;
  25. CGFloat maximumTitleHeight = 30.0f;
  26.  
  27. if (currentPosition > 0 && CGRectGetHeight(frame) >= minimumFrameHeight && CGRectGetHeight(frame) <= maximumFrameHeight) {
  28. switch (scrollDirection) {
  29. case ScrollDirectionUp:
  30. frame.size.height--;
  31. titleSize--;
  32. break;
  33.  
  34. case ScrollDirectionDown:
  35. frame.size.height++;
  36. titleSize++;
  37. break;
  38.  
  39. default:
  40. break;
  41. }
  42.  
  43. if (CGRectGetHeight(frame) <= minimumFrameHeight) {
  44. frame.size.height = minimumFrameHeight;
  45. }
  46.  
  47. if (CGRectGetHeight(frame) >= maximumFrameHeight) {
  48. frame.size.height = maximumFrameHeight;
  49. }
  50.  
  51. if (titleSize <= minimumTitleHeight) {
  52. titleSize = minimumTitleHeight;
  53. }
  54.  
  55. if (titleSize >= maximumTitleHeight) {
  56. titleSize = maximumTitleHeight;
  57. }
  58. }
  59.  
  60. [self.navigationController.navigationBar setFrame:frame];
  61. [self.navigationController.navigationBar setTitleTextAttributes: @{ NSFontAttributeName : [UIFont fontWithName:@"Canterbury-Regular" size:titleSize] }];
  62. }
  63. }

自然而然,这种方式并不顺利,代码很多,更不用说我需要淡出条形按钮项目了.

提前致谢!

解决方法

看看 AMScrollingNavbar,它已经有褪色的支持. 您可以尝试更改NavigationBar的字体大小,使标题更小.

猜你在找的iOS相关文章