1. 程式人生 > >學習筆記一、UITableView上下滾動導航欄漸變隱藏和顯示效果

學習筆記一、UITableView上下滾動導航欄漸變隱藏和顯示效果

大體思路:定義一個UINavigationBar的Category,在NavigationBar頂層增加一個檢視overlay。滾動時通過設定overlay檢視的背景色和透明度來達到隱藏和顯示導航欄效果。程式碼如下:

#import <UIKit/UIKit.h>

@interface UINavigationBar (CustomNavigationBar)

- (void)setCustomBackgroundColor:(UIColor *)backgroundColor;

@end

#import "UINavigationBar+CustomNavigationBar.h"
#import <objc/runtime.h>

@implementation UINavigationBar (CustomNavigationBar)

static char overlayKey;

- (UIView *)overlay
{
    return objc_getAssociatedObject(self, &overlayKey);
}

- (void)setOverlay:(UIView *)overlay
{
    objc_setAssociatedObject(self, &overlayKey, overlay, OBJC_ASSOCIATION_RETAIN);
}

- (void)setCustomBackgroundColor:(UIColor *)backgroundColor
{
    if (!self.overlay) {
        [self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
        [self setShadowImage:[UIImage new]];
        //需要遮住狀態列
        self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -20, [UIScreen mainScreen].bounds.size.width, 64)];
        self.overlay.autoresizingMask = UIViewAutoresizingFlexibleWidth ;
        [self insertSubview:self.overlay atIndex:0];
    }
    self.overlay.backgroundColor = backgroundColor;
}

tableview滾動時,呼叫方法設定導航欄背景色:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    UIColor *color = [UIColor blueColor];
    CGFloat offsetY = scrollView.contentOffset.y;
    if (offsetY > 0) {
        CGFloat alpha = 1- (64 - offsetY) / 64;
        [self.navigationController.navigationBar setCustomBackgroundColor:[color colorWithAlphaComponent:alpha]];
    } else {
        [self.navigationController.navigationBar setCustomBackgroundColor:[color colorWithAlphaComponent:0]];
    }
}

相關推薦

學習筆記UITableView上下滾動導航漸變隱藏顯示效果

大體思路:定義一個UINavigationBar的Category,在NavigationBar頂層增加一個檢視overlay。滾動時通過設定overlay檢視的背景色和透明度來達到隱藏和顯示導航欄效果。程式碼如下: #import <UIKit/UIKit.h&g

UINavigationController導航隱藏顯示

- (void)viewWillAppear:(BOOL)animated { [super.navigationController setNavigationBarHidden:YES a

點選頁面,UINavigationController導航隱藏顯示

在iphone的照片庫中,顯示照片列表中,導航欄可以自動顯示和隱藏。許多應用中也用到了導航欄中的隱藏和顯示,實現效果如下圖: 點選頁面,導航欄隱藏: 下面是具體的實現過程。 首先建立工程,iphone.navta. 然後開啟MainWindow.xib 新增UINavi

《JavaScript高級教程》學習筆記變量和數據類型

body 統一 () 邏輯 obj mas 沒有初始化 關系 可變 JavaScript的核心語言特性在ECMA-262中是以名為ECMAScript的偽語言的形式來定義的。 一、變量和數據類型 1. 變量 JavaSript是弱類型語言,可以通過var定義任

深入理解JVM學習筆記(總覽)

1、JVM歷史2、JVM記憶體結構3、JVM垃圾回收機制4、JVM效能監控工具5、JVM效能調優案例時間6、JVM類檔案結構7、JVM類載入機制8、JVM位元組碼執行引擎9、JVM虛擬機器編譯及其執行時

libevent學習筆記 基礎知識

注:./configure --prefix=/home/mjf/lib 因為如果我不加prefix,後面執行示例程式的時候會如下錯誤:error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file

學習筆記Python pip包安裝

1、下載pip安裝包  下載地址https://pypi.python.org/pypi/pip#downloads :       選擇source類下載 File Type Py Version Uploaded on Size Source 2016

srping-data學習筆記(傳統方式訪問數據庫實現弊端分析)

https 下載 edi 存在 關系型 mys work rpi nbsp spring-data是一系列項目的集合,涵蓋訪問關系型、非關系型等各種數據源的子項目 spring data jpa 關系型 spring data mongo db spring data r

Bootstrap 學習筆記 項目實戰 響應式導航

span navbar fault logo zh-cn sig con href meta 導航代碼HTML: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta

Mongodb學習筆記使用asp.net在Mongodb中儲存讀取圖片檔案

今天練習瞭如何使用c# driver儲存和讀取圖片。 廢話不多說,直接上程式碼。 一、儲存圖片(檔案應該也一樣): private void SaveImgBJSON(string id, byte[] byteImg) {

VUE2.0學習筆記(二):底部導航

用VUE2.0寫一個放在微信公眾號裡的移動網站。一:微信公眾號裡的頁面是自帶一行深色的標題欄的,如下圖:中間的title文字是可以自定義的,所有我們不需要為我們的vue頁面做一個公共的頂部欄。配置方法如下:1、在main.js檔案里加入以下程式碼:router.beforeE

一起學ASP.NET Core 2.0學習筆記(): CentOS下 .net core2 sdk nginxsupervisormysql環境搭建

image dev 預覽 def star fig brush rest aspnet 作為.neter,看到.net core 2.0的正式發布,心裏是有點小激動的,迫不及待的體驗了一把,發現速度確實是快了很多,其中也遇到一些小問題,所以整理了一些學習筆記: 閱讀目

React 學習筆記 ()(建立元件繫結資料繫結屬性迴圈資料引入圖片)

使用 create-react-app 快速構建 React 開發環境 $ cnpm install -g create-react-app $ create-react-app my-app $ cd my-app/ $ npm start 建立元件、繫結資料、繫結屬性、迴圈資

深度學習筆記: LeNet-5AlexNet VGGNet等網路模型的小結

最近在學習吳恩達Andrew Ng的深度學習課程,之前對這幾個網路還比較混亂,現在記錄一下: LeNet-5神經網路的貢獻:  1.這是一個比較早的網路模型,其中在卷積層後面加入池化層的思想先今還在使用。 2.在最後的卷積層接入池化層和全連線層在當前也比較常用。 出

Apache Ignite 學習筆記(): Ignite介紹部署安裝REST/SQL客戶端使用

Apache Ignite 介紹 Ignite是什麼呢?先引用一段官網關於Ignite的描述: Ignite is memory-centric distributed database, caching, and processing platform for transactional, analyt

ES6學習筆記之js發展letconst解構賦值

ECMAScript和JavaScript的關係? 1996年11月,JavaScript的創造者—-Netscape公司,決定將JavaScript提交給國際標準化組織ECMA,希望這種語言能成為國際標準。次年,ECMA釋出262號檔案(ECMA-262)的

Typescript 學習筆記:介紹安裝編譯

前言 整理了一下 Typescript 的學習筆記,方便後期遺忘某個知識點的時候,快速回憶。 為了避免凌亂,用 gitbook 結合 marketdown 整理的。 若是有不對的地方,歡迎留言指出。 眾所周知,JavaScript 是弱型別的,而這對開發人員來說,在一定程度上算是一個“痛點”。解

CSDN機器學習筆記 概述線性迴歸

一、課程知識點 講師:唐宇迪 本次課程 1.系列課程環境配置 2.機器學習概述 3.線性迴歸演算法原理推導 4.邏輯迴歸演算法原理 5.最優化問題求解 6.案例實戰梯度下降 一、機器學習處理問題過程及常用庫 1. 機

EF6學習筆記:code-first簡單創建數據庫表的一些過程

time img install 類名 開啟 屬性 bject nbsp 程序包管理 我的EF學習筆記是按照 汪鵬(網名Jeffcky) 大俠《你必須掌握的Entity Framework 6.x與Core 2.0》來弄的。 這也是我第一篇博客,感覺這東西不能亂寫啊,算

EF6學習筆記:code-first簡單建立資料庫表的一些過程

  我的EF學習筆記是按照 汪鵬(網名Jeffcky) 大俠《你必須掌握的Entity Framework 6.x與Core 2.0》來弄的。 這也是我第一篇部落格,感覺這東西不能亂寫啊,算了,幹吧。 EF我之前是做過的,但是隻是一些零碎的東西,不成系統。 EF是什麼呢?ORM框架objec