激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - IOS - iOS實現頂部標簽式導航欄及下拉分類菜單

iOS實現頂部標簽式導航欄及下拉分類菜單

2021-01-10 15:00hou0716 IOS

這篇文章主要為大家詳細介紹了iOS實現頂部標簽式導航欄及下拉分類菜單的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了ios實現頂部標簽式導航欄及下拉分類菜單的全部過程,供大家參考,具體內容如下

當內容及分類較多時,往往采用頂部標簽式導航欄,例如網易新聞客戶端的頂部分類導航,最近剛好有這樣的應用場景,參考網絡上一些demo,實現了這種導航效果,記錄一些要點。

效果圖(由于視頻轉gif掉幀,滑動和下拉動畫顯得比較生硬,剛發現quicktime可以直接錄制手機視頻,推薦一下,很方便)

iOS實現頂部標簽式導航欄及下拉分類菜單

1.頂部標簽式導航欄

(1)實現思路

其實就是在上下兩個uiscrollview上做文章,實現聯動選擇切換的效果。

①頂部標簽導航欄topcategorylistscrollview加載顯示分類數據,下方contentscrollview顯示分類對應的內容,選擇頂部標簽后,內容視圖contentscrollview切換到對應視圖。同樣,滑動下方內容視圖,標簽欄滑動到指定分類并居中顯示,若分類初始位置在導航欄最左側或最右側,則不用滑動到中間位置。以免兩側留出一段空白。

iOS實現頂部標簽式導航欄及下拉分類菜單

②頂部導航欄可以用label或button來代表分類,這里用的是label,添加了一個tap手勢響應交互事件,將分類抽取為一個model,包含分類名稱、對應內容視圖特有的id或url及分類名稱長度(分類下方的下劃線長度隨名稱長度變化)等屬性,根據分類的多少,決定下方內容視圖的contentsize,再將分類順序與內容順序對應起來,在交互邏輯中實現聯動切換。

③點擊右側按鈕,彈出下拉菜單,也可切換分類。

(2)ios7上autolayout的問題

由于ios7的autolayout與ios8、9的差異,在ios7上uiscrollview的contentsize及一些使用autolayout的uiview動畫效果會有問題,所以建議使用setframe的方式來實現兩個頂部導航欄及下拉菜單的ui效果。

(3)頂部導航欄

遍歷分類數據,往頂部導航欄添加label。需要注意以下幾點:

①設置label的tag,與分類數據的index對應,方便后續根據標識進行切換選擇;

②label的userinteractionenabled默認為no,需要設置一下,方便響應tap點擊操作;

③分類名稱長度是動態的,如果超出默認長度則根據實際長度顯示,包括label的長度及label底部下劃線長度,所以分類數據對應的model里需要有一個長度屬性,用來記錄此長度,方便后續顯示,而不用實時去計算長度。

iOS實現頂部標簽式導航欄及下拉分類菜單

分類名稱底部的下劃線隨著分類label走,默認選中第一個label,所以下劃線默認也是停留在第一個,并且根據分類數量設置好頂部導航欄的contentsize。

iOS實現頂部標簽式導航欄及下拉分類菜單

(4)內容視圖

同樣根據分類數量設置好內容視圖的contentsize

iOS實現頂部標簽式導航欄及下拉分類菜單

(5)兩個scrollview之間的交互邏輯

兩個scrollview之間的聯動需要注意單向傳遞,避免發生重復滑動。這里的滑動選擇操作就三種情況:

①選擇某個分類標簽,導航欄滑動到指定位置,內容視圖滑動到指定位置;

②滑動內容視圖,導航欄也切換滑動到對應分類標簽位置;

③在下拉菜單中選擇了某個分類,導航欄和內容視圖滑動到對應位置,實際與①一樣。

這里先說第一種情況,點擊導航欄的分類標簽,則block回調到controller里

iOS實現頂部標簽式導航欄及下拉分類菜單iOS實現頂部標簽式導航欄及下拉分類菜單

先讓contentscrollview滑動到指定位置,再通知topcategorylistscrollview滑動。

iOS實現頂部標簽式導航欄及下拉分類菜單

這里需要說明一下,scrollviewdidendscrollinganimation原本是內容視圖滑動結束后調用,用來通知導航欄滑動到對應分類標簽。scrollviewdidenddecelerating是處理手指在屏幕上滑動內容視圖結束后調用,也是通知導航欄滑動到對應分類標簽。但是為了讓滑動時分類標簽切換顯示效果更更連貫,在scrollviewdidscroll里進行了處理,當滑出一定距離,新的index與當前index不一致時就通知導航欄切換分類標簽,實際上scrollviewdidendscrollinganimation和scrollviewdidenddecelerating這時已經可以去掉了。

iOS實現頂部標簽式導航欄及下拉分類菜單

類似的,第二種情況,滑動內容視圖,導航欄切換滑動到對應分類標簽位置,實際就是在scrollviewdidscroll中進行判斷處理的。

對于第三種情況,下拉菜單中選擇分類,實際過程與第一種情況一樣。

需要注意的是切換分類時,需要記錄更新當前分類的值,彈出下拉菜單的時候,才能標識高亮當前分類。

導航欄滑動的時候,需要針對分類標簽的具體位置,決定是否滑動,以及滑動距離,并根據分類名稱長度更新下劃線的長度

iOS實現頂部標簽式導航欄及下拉分類菜單

2.下拉分類菜單

(1)使用場景及方式

下拉逐漸展開分類菜單,選擇某一個分類,導航欄和內容視圖切換到對應分類及內容,展開狀態時,點擊按鈕或者背景陰影區域逐漸收起菜單。

(2)ui元素分解

一個放在導航欄旁邊的按鈕dropdownbutton,一個titleview,以及下拉分類菜單dropdowncategorylistview,里面包含一個collectionview展示分類數,據。dropdownbutton控制titleview及dropdowncategorylistview的顯示,dropdowncategorylistview背景色設置一定透明度做背景。接下來總結一下幾個關鍵點。

iOS實現頂部標簽式導航欄及下拉分類菜單

iOS實現頂部標簽式導航欄及下拉分類菜單

(3)collectionview高度控制及分隔線效果

這里每一行顯示三個分類數據,分類數量及cell高度確定后即可確定collectionview的高度,即先確定縱向有幾行分類數據,行數xcell高度就是collectionview 高度。

iOS實現頂部標簽式導航欄及下拉分類菜單

對于分類cell的分隔線效果,可能最容易想到的就是cell之間留出間隙,collectionview背景色設置一下就行了,但是這里有兩個問題,首先是三等分cell加上留出的間隙,間隙的寬度會帶有小數,顯示出來的效果粗細不均,并且這里cell與collectionview背景色都為白色,留出空隙也無法形成分隔線的視覺效果,所以只能在cell內部處理,底部和右側加分隔線,根據cell所處位置控制分隔線顯示與否。

iOS實現頂部標簽式導航欄及下拉分類菜單

(4)點擊collectionview的事件處理

dropdowncategorylistview添加了tap手勢,點擊view則通知controller收起移除下拉分類菜單 ,collectionview作為一部分,點擊collectionview也會通知controller收起移除下拉分類菜單,顯然不符合要求,解決辦法是將手勢的cancelstouchesinview屬性設為no,即將touch事件也傳遞到collectionview上,didselect選中分類后繼續處理即可。

iOS實現頂部標簽式導航欄及下拉分類菜單

(5)交互效果處理

下拉菜單的展開和收起漸變效果用uiview的animation即可,需要注意的是收起動畫效果,需要先去掉陰影,然后收起下拉菜單,這里的陰影其實就是dropdowncategorylistview設置了一定透明度的背景色,所以先將背景色設成clearcolor再收起菜單即可。

iOS實現頂部標簽式導航欄及下拉分類菜單

以上就是本文的全部內容,希望對大家的學習有所幫助。

延伸 · 閱讀

精彩推薦
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
876
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 天天干干| 黑人日比视频 | 国产91对白叫床清晰播放 | 黄色av网站免费看 | 国产91久久精品一区二区 | 中文字幕激情视频 | www.成人免费 | 久久一区二区三区av | 成人三级电影网 | 毛片免费视频观看 | 毛片久久| 欧美不卡在线 | 狠狠干91 | av7777777| 人禽l交免费视频 | 精品二区在线观看 | 久久国精品 | 精品偷拍久久 | 免费一区二区三区 | 精品国产一区二区三区成人影院 | 亚洲成人自拍电影 | 国产精品久久久久久久久久10秀 | 免费观看9x视频网站在线观看 | 成人在线a | 欧美片一区二区 | 国产精品久久久久久久久久尿 | 少妇的肉体的满足毛片 | 一区二区三区四区高清视频 | 色综合欧美 | 成人羞羞视频在线观看免费 | 国产日产精品一区二区三区四区 | 午夜视频你懂的 | 日韩区在线| 欧美三级欧美成人高清www | 99激情视频| 欧美性xxxx狂欢老少配 | 成人毛片一区二区三区 | 色网站在线免费观看 | 高清做爰免费无遮网站挡 | 成人福利在线视频 | 在线成人www免费观看视频 |