老司機工作中用到的自定義控制元件,總有一個適合你的(一)

發表於2016-11-12

今天總結了一下平時工作中為那些奇葩的UI設計自定義的控制元件,下面一個個分享給大家。


一、第一個是tableView的透明度漸變效果

1、效果:

很多app用到了這種效果,比如歌詞顯示、直播間聊天記錄等。
大致效果如下:

1a9b2d43d35e3
WZBGradualTableView

2a9b2d43d35e3

背景圖片擷取自新浪直播,侵立刪
2、使用方法:

引數值說明一下,direction代表方向,是一個位移列舉,如果想讓tableView頂部漸變,則此值為WZBTableViewGradualDirectionTop,如果為底部漸變,則此值為WZBTableViewGradualDirectionBottom,如果上下都要漸變,則需要WZBTableViewGradualDirectionTop | WZBTableViewGradualDirectionBottom。gradualValue代表漸變範圍值,值的範圍為0-1,如果想讓頂部20%漸變,此值為@(0.2)。如果想頂部底部都有20%漸變,此值為@[@(0.2), @(0.2)]。

如下:

則顯示效果為:

2a9b2d43d35e3

WZBGradualTableView

如果這樣寫

效果如下:

1a9b2d43d35e3

背景圖片擷取自新浪直播,侵立刪
3、實現大致原理:

這種漸變效果主要用到tableView的mask屬性,我們首先要建立一個CAGradientLayer,此類的使用網上介紹有很多,在這裡不再累述,不懂得私聊我,或者加入我的技術群。

上程式碼:

由於tableView可以滑動,滑動的時候就需要實時的作出改變,因此我這裡使用KVO監聽“contentOffset”屬性,每當contentOffset發生改變,證明使用者滑動了tableView,這時候需要呼叫的程式碼為:

別忘了移除觀察者:

4、GitHub原始碼地址:WZBGradualTableView

二、自定義的開關控制元件

1、效果:

wzbswitch

WZBSwitch
2、使用方法:

將WZBSwitch.h和WZBSwitch.m拖入工程

在需要使用的地方呼叫

對於開關狀態的監聽或者您還可以通過代理:

然後實現代理方法即可

如果您想自定義開關顏色,程式碼如下:

或者這樣

3、實現大致原理:

此控制元件由兩部分組成,頂部View和底部View

這個方法有兩個block引數,第一個可以設定您所需要設定的所有顏色值,第二個block是當開關狀態發生改變的時候回撥

此方法用於設定開關狀態

如果您不喜歡使用block,我還提供了代理方法監聽開關狀態的改變

當外界呼叫方法改變開關狀態時,動畫/非動畫,改變上層View的frame即可

4、GitHub原始碼地址:WZBSwitch

三、一個仿網易的Segment

1、效果:

7a9b2d43d35e3

WZBSegmentedControl
2、使用方法:

將WZBSegmentedControl.h和WZBSegmentedControl.m拖入工程

在需要使用的地方呼叫

3、實現大致原理:

此控制元件還不是很完善,目前只提供一個初始化方法:

核心方法:改變底部白色滑塊的位置,但是如果注意觀察,有個注意點是,在滑動的時候title的文字也會隨著漸變,目前先試用這個方法臨時解決,後續會提供方法設定文字顏色、選中文字顏色、背景顏色以及滑塊顏色等。

4、GitHub原始碼地址:WZBSegmentedControl

怎麼樣,這些您學會怎麼用了嗎?

相關文章