V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
ltebean
V2EX  ›  iDev

知乎日报 ios 客户端首页 NavigationBar 的实现

  •  3
     
  •   ltebean · 2015-02-17 16:46:19 +08:00 · 6482 次点击
    这是一个创建于 3601 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知乎日报的导航栏做的很赞~但是ios里很难动态地修改navigation bar和status bar的颜色,所以写了一个UINavigationBar的Category:

    https://github.com/ltebean/LTNavigationbar

    实际效果如下:
    LTNavigationbar

    17 条回复    2015-03-11 14:51:57 +08:00
    Esay
        1
    Esay  
       2015-02-17 18:07:31 +08:00
    赞。
    提个小建议,能不能在用手势 push back 时也让 nav bar 动态变化
    hewigovens
        2
    hewigovens  
       2015-02-17 18:07:54 +08:00
    知乎日报那个应该没用 UINavigationController...
    SeanChense
        3
    SeanChense  
       2015-02-17 19:03:14 +08:00
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
    UIColor * color = [UIColor colorWithRed:0/255.0 green:175/255.0 blue:240/255.0 alpha:1];
    CGFloat offsetY = scrollView.contentOffset.y;
    if (offsetY > NAVBAR_CHANGE_POINT) {
    CGFloat alpha = 1 - ((NAVBAR_CHANGE_POINT + 64 - offsetY) / 64);

    [self.navigationController.navigationBar useBackgroundColor:[color colorWithAlphaComponent:alpha]];
    } else {
    [self.navigationController.navigationBar useBackgroundColor:[color colorWithAlphaComponent:0]];
    }
    }

    这段逻辑有没有可能放到 `UINavigationBar+BackgroundColor.h` 里呢?
    CDuXZMAPgHp1q9ew
        4
    CDuXZMAPgHp1q9ew  
       2015-02-17 19:52:12 +08:00
    应该可以吧 用kvo
    ltebean
        5
    ltebean  
    OP
       2015-02-17 22:19:43 +08:00
    @hewigovens 嗯因该是没用navigation controller,感觉那样实现起来还更容易。 这个category主要是为了方便动态地改navbar的颜色~
    ltebean
        6
    ltebean  
    OP
       2015-02-17 22:24:15 +08:00
    @SeanChense 这个category主要是为了能够动态地改navbar的backgroundColor~至于颜色是跟着scrollView走还是一个pan gesture或是其他什么触发条件还是要看具体app需要的
    lyojo
        7
    lyojo  
       2015-02-24 21:57:29 +08:00
    为什么不设置navigationBar隐藏,然后放置一个透明的view,在view上面添加两个按钮,然后在tableview 的scrollview delegate的监听滚动事件方法里面去修改那个透明view的alpha值,这样比较简单。
    satanwoo
        8
    satanwoo  
       2015-02-25 17:37:13 +08:00
    @lyojo

    如果没理解错的话,你的逻辑无法复用啊,至少从view上无法复用。
    dopcn
        9
    dopcn  
       2015-03-02 22:57:07 +08:00
    cool
    dopcn
        10
    dopcn  
       2015-03-02 23:33:51 +08:00
    请问这个 key backgroundOverlay 你是怎么找到的,view debugging 的时候只显示是一个 UIView
    ltebean
        11
    ltebean  
    OP
       2015-03-03 10:47:45 +08:00
    @dopcn 这个view是后来插入进去的,就是靠它来改变backgroundcolor的
    ashamp
        12
    ashamp  
       2015-03-09 13:58:08 +08:00
    准备下载下来看看 可能用得上
    ashamp
        13
    ashamp  
       2015-03-09 14:05:24 +08:00
    下下来看了,效果确实不错!就是用的sb太不习惯 哈哈
    ashamp
        14
    ashamp  
       2015-03-09 14:19:58 +08:00
    600多个star!厉害!
    kepenj
        15
    kepenj  
       2015-03-10 10:52:52 +08:00
    Elethom
        16
    Elethom  
       2015-03-11 07:08:12 +08:00 via iPhone
    @satanwoo
    看了下代碼,實現得確實非常糟糕。
    satanwoo
        17
    satanwoo  
       2015-03-11 14:51:57 +08:00
    @Elethom
    。。。这你回复我干啥??
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:44 · PVG 05:44 · LAX 13:44 · JFK 16:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.