欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS自定義UITabBar仿今日頭條效果

 更新時間:2020年05月26日 09:38:54   作者:chernyog  
這篇文章主要為大家詳細介紹了iOS自定義UITabBar仿今日頭條效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

動機

關(guān)于自定義 TabBar,早就有過很多討論,開源網(wǎng)站上也有很多造好的輪子,多半是純代碼實現(xiàn)有個性的 TabBar,當然我們可以很方便的使用它。周末閑著沒事干,自己也寫了一下,模仿今日頭條的 TabBar 效果,實現(xiàn)方式是Storyboard + 代碼。

效果圖

實現(xiàn)步驟在 Storyborad 上搭建項目基礎(chǔ)結(jié)構(gòu)

在界面上設(shè)置每個 TabBarItem 的相關(guān)屬性

需要自定義的 item 不需要在界面上設(shè)置。

自定義 UITabBarViewController

目的

替換默認的 UITabBar
處理 發(fā)布按鈕(中間那個加號按鈕)點擊事件

主要代碼

替換 UITabBar,監(jiān)聽點擊事件

override func viewDidLoad() {
 super.viewDidLoad()
 // 替換 tabbar
 let _tabBar = TabBar()
 // 監(jiān)聽按鈕點擊事件
 _tabBar.handleBtnReleaseClick(self, action: #selector(btnReleaseClick))
 setValue(_tabBar, forKey: "tabBar")
}

自定義 UITabBar

目的

自定義 UITabBar,替換掉 Storyboard 上默認生成的 TabBarItem
處理 發(fā)布按鈕(中間那個加號按鈕)點擊事件

主要代碼

刪除占位“按鈕”,添加自定義按鈕

// MARK: 刪除占位“按鈕”,添加自定義按鈕
override func layoutSubviews() {
 super.layoutSubviews()
 btnRelease.backgroundColor = UIColor.white
 // 過濾掉 _UIBarBackground 類型的對象,只保留 UITabBarButton 類型的對象
 let tabbarButtonList = iews.filter{NSStringFromClass(type(of: $0)) == abBarButton"}
 // 取出需要刪除的“按鈕”(經(jīng)測試,知道中間那個加號按鈕的下標是2)
 let tmpView = tabbarButtonList[safe: 2]
 // 把默認生成的從父容器中移除
 tmpView?.removeFromSuperview()
 let x = (InnerConst.ScreenW - btnRelease.w) * 0.5
 let y = InnerConst.ButtonOffsetY
 btnRelease.origin = CGPoint(x: x, y: y)
 addSubview(btnRelease)
}

處理默認情況下,按鈕超出 TabBar 以外區(qū)域不能點擊問題

// MARK: 處理默認情況下,按鈕超出 TabBar 以外區(qū)域不能點擊問題
override func hitTest(_ point: CGPoint, with event: UIEvent?) -View? {
 if isHidden == false {
  let newPoint = convert(point, to: btnRelease)
  if btnRelease.point(inside: newPoint, with: event) {
   return btnRelease
  }
  return super.hitTest(point, with: event)
 }
 return super.hitTest(point, with: event)
}

按鈕點擊事件委托給調(diào)用方

func handleBtnReleaseClick(_ target: AnyObject?, action: Selector) {
 btnRelease.addTarget(target, action: action, for: .touchUpInside)
}

代碼寫到這里,一個類似于今日頭條的 UITabBar(主要是中間那個按鈕)差不多造出來了。以上部分貼出來的是個人認為比較關(guān)鍵的代碼,有問題可以討論,目的是用最簡單的方式、最少的代碼實現(xiàn)需求。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決

    iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決

    iOS10的到來,帶來了條幅和鎖屏界面的重新設(shè)計,美觀又好看,再加上抬腕喚醒功能,查看需要的信息確實更便捷了,還能快捷回復一些通知,十分輕松,但同樣有問題,下面這篇文章主要給大家介紹了關(guān)于iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決方法,需要的朋友可以參考下。
    2017-10-10
  • iOS swift 總結(jié)NavigationController出現(xiàn)問題及解決方法

    iOS swift 總結(jié)NavigationController出現(xiàn)問題及解決方法

    這篇文章主要介紹了iOS swift 總結(jié)NavigationController出現(xiàn)問題及解決方法的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • IOS10 相冊相機閃退bug解決辦法

    IOS10 相冊相機閃退bug解決辦法

    這篇文章主要介紹了IOS10 相冊相機閃退bug解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • IOS 開發(fā)之UITableView 刪除表格單元寫法

    IOS 開發(fā)之UITableView 刪除表格單元寫法

    這篇文章主要介紹了IOS 開發(fā)之UITableView 刪除表格單元寫法的相關(guān)資料,這里提供實例幫助大家實現(xiàn)該功能,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • iOS中表單列表樣式鍵盤遮擋的解決方案

    iOS中表單列表樣式鍵盤遮擋的解決方案

    這篇文章主要給大家介紹了關(guān)于iOS中表單列表樣式鍵盤遮擋的解決方案,文中通過示例代碼將解決的方法一步步介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2019-01-01
  • 詳解iOS設(shè)計中的UIWindow使用

    詳解iOS設(shè)計中的UIWindow使用

    這篇文章主要介紹了iOS設(shè)計中的UIWindow使用,包括UIWindowLevel和KeyWindow兩個大的方面的講解,需要的朋友可以參考下
    2015-09-09
  • iOS新版微信底部工具欄遮擋問題完美解決

    iOS新版微信底部工具欄遮擋問題完美解決

    這篇文章主要介紹了iOS新版微信底部工具欄遮擋問題完美解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • iOS 縮小打包項目ipa大小的實現(xiàn)方法

    iOS 縮小打包項目ipa大小的實現(xiàn)方法

    下面小編就為大家分享一篇iOS 縮小打包項目ipa大小的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • IOS中MMDrawerController第三方抽屜效果的基本使用示例

    IOS中MMDrawerController第三方抽屜效果的基本使用示例

    這篇文章主要介紹了IOS中MMDrawerController第三方抽屜效果的基本使用示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • iOS實現(xiàn)微信搖一搖功能

    iOS實現(xiàn)微信搖一搖功能

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)微信搖一搖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評論