<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          YPNavigationBarTransitionIOS 導(dǎo)航欄框架

          聯(lián)合創(chuàng)作 · 2023-09-26 11:50

          YPNavigationBarTransition 是一個功能齊全的UINavigationBar框架,類似微信 UINavigationBar 效果的切換方案,支持任意透明半透明圖片背景等等不同樣式的 UINavigationBar 的切換,使過渡更自然!不需要調(diào)用任何UINavigationBarapi,YPNavigationBarConfigureStyle為視圖控制器實現(xiàn)協(xié)議。

          特征

          • 支持不透明、全透明和半透明的導(dǎo)航欄
          • 支持設(shè)置導(dǎo)航欄背景顏色
          • 支持設(shè)置導(dǎo)航欄背景圖片
          • 可以動態(tài)調(diào)整導(dǎo)航欄樣式
          • 用 Objective-C 編寫,具有完整的 Swift 互操作支持

          不同顏色和透明度的 bar 之間的切換

          圖片背景的 navigation bar

          動態(tài)調(diào)整 navigation bar 樣式


          依賴項

          • Xcode 9.0+
          • iOS 8.0+

          使用 YPNavigationBarTransition

          YPNavigationBarTransition 依靠 UINavigationControllerDelegate 的 willShow & didShow 驅(qū)動來實現(xiàn)自動管理 navigationBar 的切換。 對于每一個對 navigationBar 的樣式有自定義需求的 viewController,可以通過實現(xiàn) YPNavigationBarConfigureStyle 協(xié)議來實現(xiàn)。 每次 navigationController push 或者 pop viewController 的時候,YPNavigationBarTransition 通過對比當(dāng)前 navigationBar 的樣式和目標(biāo) viewController 指定的樣式來判斷是否需要添加 fake bar (用 UIToolbar)來模擬 navigation bar 的切換。

          YPNavigationBarConfigureStyle 協(xié)議

          typedef NS_ENUM(NSUInteger, YPNavigationBarConfigurations) {
              /*
               *  是否隱藏 navigation bar,默認(rèn)是 show。
               */
              YPNavigationBarShow   = 0,
              YPNavigationBarHidden = 1,
              /*
               *  YPNavigationBarStyleLight = UIbarStyleDefault
               *  YPNavigationBarStyleBlack = UIbarStyleBlack
               *
               *  bar style 會影響 status bar 的樣式,為 black 的時候 status bar 是白色,light 的時候是黑色。
               *  當(dāng)沒有自定義 background color 和 background image 的時候,navigation bar 的顏色也由 bar style 決定
               *  另外如果沒有提供有效的 tintColor,YPNavigationBarTransition 將根據(jù) bar style 自動設(shè)置 tintColor
               */
              YPNavigationBarStyleLight = 0 << 4,  // UIbarStyleDefault
              YPNavigationBarStyleBlack = 1 << 4,  // UIbarStyleBlack
              /*
               *  translucent = 半透明,transparent = 全透明,opaque = 不透明
               */
              YPNavigationBarBackgroundStyleTranslucent = 0 << 8,
              YPNavigationBarBackgroundStyleOpaque      = 1 << 8,
              YPNavigationBarBackgroundStyleTransparent = 2 << 8,
              /*
               *  使用顏色或者圖片來配置 navigation bar 的 background image
               */
              YPNavigationBarBackgroundStyleNone  = 0 << 16,
              YPNavigationBarBackgroundStyleColor = 1 << 16,
              YPNavigationBarBackgroundStyleImage = 2 << 16,
              YPNavigationBarConfigurationsDefault = 0,
              /*
               *  是否顯示 UINavigationBar 下方的橫線,默認(rèn)不顯示
               *  在全透明 (Transparent) 的時候,將忽略 shadow image 的設(shè)置
               */
               YPNavigationBarShowShadowImage = 1 << 20,
          };
          
          - (YPNavigationBarConfigurations) yp_navigtionBarConfiguration;

          [required] 返回 navigation bar 配置

          - (UIColor *) yp_navigationBarTintColor;

          [required] navigation bar tint color,影響 bar item 的顏色; 如果返回 nil,bar style 是 YPNavigationBarStyleBlack 的話,將使用白色作為 tintColor, bar style 是 YPNavigationBarStyleLight 的話,將使用黑色作為 tintColor。

          - (UIImage *) yp_navigationBackgroundImageWithIdentifier:(NSString **)identifier;

          [optional] navigation bar background image,identifier作為 image 的 id 使用,同 id 的圖片看作是同一張圖片,在判斷是否需要使用 fake bar 的時候需要用到。如果 bar configuration使用了 YPNavigationBarBackgroundStyleImage,這個方法一定要實現(xiàn)。

          - (UIColor *) yp_navigationBackgroundColor;

          [optional] navigation bar background color。如果 bar configuration 使用了 YPNavigationBarBackgroundStyleColor,這個方法一定要實現(xiàn)。

          動態(tài)改變 NavigationBar 的樣式

          在合適的時機(jī)調(diào)用 UIViewController 的方法 yp_refreshNavigationBarStyle,即可將 UIViewController 實現(xiàn)的 YPNavigationBarConfigureStyle 當(dāng)前 樣式同步到 navigation bar 上。參考 Example 里面的 YPGradientDemoViewController

          最佳實踐

          默認(rèn) YPNavigationBarConfigureStyle 實現(xiàn)  2.0.2 版本開始,封裝了 center 的 YPNavigationController 已內(nèi)置在 framework 內(nèi),只需要給 YPNavigationController 加一個 Category 實現(xiàn) YPNavigationBarConfigureStyle 協(xié)議即可。

          NavigationItem Title 建議使用一個 UILabel 作為 navigationItem 的 titleView 來展現(xiàn)頁面 title,這樣可以讓頁面完全自己控制 title 的顏色、 字體等等,并且還可以實現(xiàn) subtitle。可以參考 Example 里面的 YPNavigationTitleLabel

          ScrollView 跳動問題 在轉(zhuǎn)場過程中,navigationBar 的 translucent 屬性可能發(fā)生了改變, 然后導(dǎo)致了 scrollView 的 frame 和 contentInset 發(fā)生改變,頁面展示內(nèi)容位置變化。如果遇到這種情況,建議設(shè)置對應(yīng) controller 的 extendedLayoutIncludesOpaqueBars (IB 里面的 under opaque bar) 為 YES,即可避開這個問題。

          ?? 注意

          • 不支持 iOS 11 新增的 navigationBar large title。
          • 使用默認(rèn)配置的頁面,不用實現(xiàn) YPNavigationBarConfigureStyle 協(xié)議。
          瀏覽 35
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  拍黄色毛片电影视频 | 欧美性熟妇 | 黄色一级A免费看 | 欧美超逼视频 | 亚洲色图欧美色图偷拍 |