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

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

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

服務器之家 - 編程語言 - IOS - iOS輕松實現導航欄透明漸變

iOS輕松實現導航欄透明漸變

2021-03-03 15:40u010850094 IOS

這篇文章主要為大家詳細介紹了iOS輕松實現導航欄透明漸變效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先我們來看下效果

iOS輕松實現導航欄透明漸變

一開始當我們什么只設置了一張圖片作為它的頭部視圖的時候,它是這樣的

iOS輕松實現導航欄透明漸變

1.首當其沖的,我們先得把導航欄弄透明

那么我們首先得知道,設置navigationbar的backgroundcolor為clear是沒用的,你可以試著設置它的clear,但是沒用,原因一會兒我們就知道了。

而對于把導航欄設置為透明,網上大多數的方法是:

?
1
2
3
[self.navigationcontroller.navigationbar setbackgroundimage:[uiimage new]
forbarmetrics:uibarmetricsdefault];
self.navigationcontroller.navigationbar.shadowimage = [uiimage new];

你可以運行這兩句話到你的程序,你會發現這樣確實是可以的,那么我們可以從中得到幾個信息:

1)我們設置的是backgroundimage,說明也許在我們的navigationbar上有一個imageview的子視圖,而我們的看到的導航欄實際上看到的就是這個圖片,因此設置它為無圖片我們就可以看到透明,而設置backgroundcolor卻不行。

2)我們還設置了shadowimage為無圖,它其實就是導航欄下面的那根細線,如果你不寫第二句話你則會看到一根線。

我們來看一下navigationbar的結構圖

iOS輕松實現導航欄透明漸變

從圖中我們可以很清楚的看到,navigationbar他背后是有一張類型為_uinavigationbarbackground(uiimageview的子類)的視圖,我們平時看到的大部分其實都是它,第二個箭頭那里的imageview就是那根細線,他是加在我們背景的imageview上面的,我們設置backgroundimage其實就是設置_uinavigationbarbackground的image。

運行效果如圖:

iOS輕松實現導航欄透明漸變

2.還得讓它不僅僅是透明

這,怎么整?我們有幾種方案

設置漸變圖片
根據上面設置為透明的方法,我們最直接能想到的還是setbackgroundimage,根據滑動距離去設置圖片的alpha。是的,我們是去設置圖片,而不是設置uiview,這樣的話就需要你不停的去生成新圖片賦給backgroundimage,這樣感覺是不是會不太好?

運行時動態綁定
我們可以在運行時動態綁定他的背景視圖,然后設置他的背景透明度,網上有一個通過類別方式動態綁定實現導航欄顏色漸變的三方框架,感興趣的朋友可以自行去研究研究ltnavigation。

直接獲取那張imageview,然后設置他的透明度。
其實我們從結構圖中可以看出來,它是navigationbar的子視圖,我們可以通過for...in循環遍歷navigationbar.subviews,然后獲得這個view。

當然,更簡單的,它其實就在subviews的第一個,即我們可以這樣:

barimageview = self.navigationcontroller.navigationbar.subviews.firstobject

我們可以用一個全局的imageview引用他,以免我們每次都要寫一長串。

3.其實已經可以了

我們還需要做什么?沒錯,最后一步,我們僅僅只需要在scrollviewdidscroll里面,根據偏移量來動態改變barimageview的背景顏色(或者透明度)就行了。

例如我們需要在-64(默認的最小偏移量)到200之間變化:

?
1
2
3
4
5
6
7
8
- (void)scrollviewdidscroll:(uiscrollview *)scrollview {
  cgfloat minalphaoffset = - 64;
  cgfloat maxalphaoffset = 200;
  cgfloat offset = scrollview.contentoffset.y;
  cgfloat alpha = (offset - minalphaoffset) / (maxalphaoffset - minalphaoffset);
  _barimageview.alpha = alpha;
 
}

就這樣你就可以實現我在文章一開始那個圖片的效果了(其實并不是,tintcolor和satusbarstyle還沒變)。

tips

1)你也可以動態的更改的狀態欄和標題的顏色以和導航欄更匹配

?
1
2
3
4
5
6
//狀態欄
[[uiapplication sharedapplication] setstatusbarstyle:uistatusbarstylelightcontent];
//標題顏色
self.navigationcontroller.navigationbar.titletextattributes = @{nsforegroundcolorattributename : [uicolor somecolor]}
//導航欄子控件顏色
self.navigationcontroller.navigationbar.tintcolor = [uicolor somecolor];

2)注意釋放tableview 的 delegate(不然你進進出出時候會發現哪里好像不太對)

?
1
2
3
4
5
6
7
8
9
- (void)viewwillappear:(bool)animated {
 [super viewwillappear:animated];
 self.tableview.delegate = self;
}
- (void)viewwilldisappear:(bool)animated {
 [super viewwilldisappear:animated];
 self.tableview.delegate = nil;
 
}

3)導航欄是公有的

所以你可能需要在viewwilldisappear里面再把導航欄設置為你需要的樣子

還有一件事情(this word learn from steve jobs)

我自己封裝了一些導航欄變化效果,使用簡單,歡迎大家嘗試:mxnavigationbarmanager。

iOS輕松實現導航欄透明漸變

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

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

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

    CodingFire13652021-02-26
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

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

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

    jiangamh8882021-01-11
  • IOS詳解iOS中多個網絡請求的同步問題總結

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

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

    liang199111312021-03-15
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

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

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

    夢想家-mxj8922021-05-10
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

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

    執著丶執念5282021-01-16
  • IOSiOS中MD5加密算法的介紹和使用

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

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

    LYSNote5432021-02-04
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

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

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

    隨風13332021-04-02
  • IOSiOS中UILabel實現長按復制功能實例代碼

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

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

    devilx12792021-04-02
主站蜘蛛池模板: 国产成人自拍视频在线 | 国产精品久久久久久影视 | 免费视频a| 狠狠婷婷综合久久久久久妖精 | 日本a级免费| 国产精品久久久久久久久久东京 | 九九热在线免费观看视频 | 曰批全过程120分钟免费69 | 免费毛片电影 | 国产激情精品一区二区三区 | 中午字幕无线码一区2020 | 国产女厕一区二区三区在线视 | 99精彩视频在线观看 | 香蕉国产在线视频 | 亚洲欧美日韩久久精品第一区 | 新久久久久久 | 一区二区久久电影 | 一区二区三区手机在线观看 | 欧产日产国产精品99 | 精品一区二区三区日本 | 91av网址| 国产免费www | 小情侣嗯啊哦视频www | 中文字幕精品在线播放 | 91在线视频网址 | 爱操av | 欧洲精品久久久久69精品 | 国产四区 | 久久国产精品系列 | 超碰99在线观看 | 在线观看麻豆 | 成人在线免费视频观看 | 亚洲影视中文字幕 | 国产成人综合在线观看 | 91专区在线观看 | 欧美激情图区 | 成人一级视频 | 成人在线视频在线观看 | 欧美18—19sex性护士中国 | 欧美伦交 | 日韩在线视频导航 |