【iOS】漸變水波 YAWaveView

一個(gè)漸變水波視圖,水波視圖相信大家已經(jīng)司空見(jiàn)慣国瓮,但是最近視覺(jué)要求繪制一個(gè)波浪是漸變色的灭必,且背景是徑向漸變的水波,于是在原來(lái)的基礎(chǔ)上做了相應(yīng)改進(jìn)乃摹。

先來(lái)看下效果圖:

漸變水波

基本實(shí)現(xiàn)以下功能:

  • 支持自定義水波形狀
  • 支持自定義背景漸變
  • 支持自定義兩層水波獨(dú)立漸變色
  • 支持波紋周期禁漓、速度、振幅等自定義
    ·····

Demo見(jiàn)github YAWaveView孵睬,喜歡的話請(qǐng)star下_

使用說(shuō)明

YAWaveView 目前已經(jīng)支持CocoaPods播歼,可以在很短的時(shí)間內(nèi)被添加到任何工程中。

安裝

YAWaveView 的安裝肪康,最簡(jiǎn)單的方法是使用CocoaPods荚恶,在PodFile里添加如下:

pod 'YAWaveView', '~> 0.0.1'

或者直接將YAWaveView.hYAWaveView.m兩個(gè)源文件直接拖進(jìn)自己的項(xiàng)目工程中撩穿。

集成

  • 首先導(dǎo)入頭文件
#import "YAWaveView.h"
  • 遵循相應(yīng)協(xié)議
@interface ViewController () <YAWaveViewDelegate> {
    YAWaveView *_wave;
    YAWaveView *_rectWave;
}
  • 初始化
NSArray *colors = @[(__bridge id)[UIColor colorWithRed:134/255.0 green:208/255.0 blue:248/255.0 alpha:0.75].CGColor, (__bridge id)[UIColor whiteColor].CGColor];  //里
NSArray *sColors = @[(__bridge id)[UIColor colorWithRed:166/255.0 green:240/255.0 blue:255/255.0 alpha:0.5].CGColor, (__bridge id)[UIColor colorWithRed:240/255.0 green:250/255.0 blue:255/255.0 alpha:0.5].CGColor];  //外

    
    //默認(rèn)圓形波浪
    CGFloat waveWidth = 160;
    _wave = [[YAWaveView alloc]initWithFrame:CGRectMake(100, 100, waveWidth, waveWidth)];
    [self.view addSubview:_wave];
    _wave.layer.cornerRadius = waveWidth/2;
    _wave.clipsToBounds = YES;
    _wave.colors = colors;
    _wave.sColors = sColors;
    _wave.percent = 0.7;
   
    //方形波浪
    _rectWave = [[YAWaveView alloc]initWithFrame:CGRectMake(200, 560, 140, 100)];
    [self.view addSubview:_rectWave];
    _rectWave.colors = colors;
    _rectWave.sColors = sColors;
    _rectWave.percent = 0.7;
    _rectWave.delegate = self;
  • 開(kāi)始繪制
 [_wave startWave];
 [_rectWave startWave];
  • 實(shí)現(xiàn)相應(yīng)協(xié)議
//自定義背景漸變
- (void)drawBgGradient:(YAWaveView *)waveView context:(CGContextRef)context {
    CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();
    CGFloat compoents[8]={
        1.0,1.0,1.0,1.0,
        166/255.0,240/255.0,255.0/255.0,1
    };
    
    CGFloat locations[2]={0,0.7};
    CGGradientRef gradient= CGGradientCreateWithColorComponents(colorSpace, compoents, locations, 2);
    
    CGFloat width = CGRectGetWidth(waveView.frame);
    CGFloat height = CGRectGetHeight(waveView.frame);
    CGPoint center = CGPointMake(width/2, height/2);
    
    if (waveView == _rectWave) {
        //線性漸變
        CGContextDrawLinearGradient(context, gradient, CGPointMake(0, 0), CGPointMake(width, height), kCGGradientDrawsAfterEndLocation);
    } else {
        //徑向漸變
        CGContextDrawRadialGradient(context, gradient, center,0, center, width/2, kCGGradientDrawsAfterEndLocation);
    }
    
    CGColorSpaceRelease(colorSpace);
    CGGradientRelease(gradient);
}

完成上述步驟磷支,漸變水波已經(jīng)集成到我們的項(xiàng)目中了,當(dāng)然YAWaveView還提供了一系列的對(duì)外屬性變量食寡,使我們可以高度自定義水波雾狈,如下:

@property (nonatomic, assign) CGFloat percent;           // 百分比      默認(rèn):0
@property (nonatomic, assign) CGFloat waveAmplitude;     // 波紋振幅     默認(rèn):0
@property (nonatomic, assign) CGFloat waveCycle;         // 波紋周期     默認(rèn):1.29 * M_PI / self.frame.size.width
@property (nonatomic, assign) CGFloat waveSpeed;         // 波紋速度     默認(rèn):0.2/M_PI
@property (nonatomic, assign) CGFloat waveGrowth;        // 波紋上升速度  默認(rèn):1.00
@property (nonatomic, assign) BOOL isRound;              // 圓形/方形    默認(rèn):YES

@property (nonatomic, strong) NSArray *colors;   // 漸變的顏色數(shù)組1
@property (nonatomic, strong) NSArray *sColors;  // 漸變的顏色數(shù)組2
····

另外還提供了相關(guān)API控制水波

// 開(kāi)始波浪
- (void)startWave;
// 停止波動(dòng)
- (void)stopWave;
// 繼續(xù)波動(dòng)
- (void)goOnWave;
// 清空波浪
- (void)reset;

等等一系列,具體可參考YAWaveView.h

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末抵皱,一起剝皮案震驚了整個(gè)濱河市善榛,隨后出現(xiàn)的幾起案子辩蛋,更是在濱河造成了極大的恐慌,老刑警劉巖移盆,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悼院,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡咒循,警方通過(guò)查閱死者的電腦和手機(jī)据途,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)叙甸,“玉大人颖医,你說(shuō)我怎么就攤上這事●烧簦” “怎么了熔萧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)僚祷。 經(jīng)常有香客問(wèn)我佛致,道長(zhǎng),這世上最難降的妖魔是什么久妆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任晌杰,我火速辦了婚禮,結(jié)果婚禮上筷弦,老公的妹妹穿的比我還像新娘肋演。我一直安慰自己,他們只是感情好烂琴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布爹殊。 她就那樣靜靜地躺著,像睡著了一般奸绷。 火紅的嫁衣襯著肌膚如雪梗夸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天号醉,我揣著相機(jī)與錄音反症,去河邊找鬼。 笑死畔派,一個(gè)胖子當(dāng)著我的面吹牛铅碍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播线椰,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胞谈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起烦绳,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卿捎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后径密,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體午阵,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年享扔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趟庄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伪很,死狀恐怖戚啥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锉试,我是刑警寧澤猫十,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站呆盖,受9級(jí)特大地震影響拖云,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜应又,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一宙项、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧株扛,春花似錦尤筐、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至旬蟋,卻和暖如春油昂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倾贰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工冕碟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匆浙。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓安寺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吞彤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子我衬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • “人生不是以一役定輸贏的”。 人生不只有此時(shí)此刻饰恕, 更有太多的彼時(shí)彼刻挠羔, 你要等。
    木卯丁閱讀 175評(píng)論 0 1
  • 示例 先來(lái)看一個(gè)小示例: $needle='1abc'; $haystack=array(1,2,3); var_...
    斯文小螞蟻閱讀 325評(píng)論 0 0
  • 致辭 祝福聲聲情長(zhǎng)長(zhǎng) 笑語(yǔ)陣陣喜洋洋 女士們埋嵌,先生們破加。 各位親朋好友,各位貴客佳賓雹嗦。 大家上午好...
    文字砌匠閱讀 1,112評(píng)論 7 7
  • 118. 我走進(jìn)黑夜 像走進(jìn)你的影子 119. 心靈充實(shí)的日子 就是陽(yáng)光燦爛的日子 120. 我們?cè)诠适轮?慢慢變得世故
    年輕的風(fēng)閱讀 310評(píng)論 4 3