仿UC瀏覽器首頁下拉動(dòng)畫及實(shí)現(xiàn)分析

動(dòng)畫效果

圖1

經(jīng)常用UC看到首頁有這么一個(gè)動(dòng)畫,就仿造寫了一下三热。

實(shí)現(xiàn)分析

1.畫曲線的動(dòng)畫

這個(gè)一眼看去就想到用貝塞爾曲線畫,來看貝塞爾曲線方法灾部,給出兩個(gè)定點(diǎn)康铭,和一個(gè)控制點(diǎn)就可以畫。

CGContextAddQuadCurveToPoint(context, 控制點(diǎn)x, 控制點(diǎn)y, 目標(biāo)點(diǎn)x, 目標(biāo)點(diǎn)y);

于是按照下圖赌髓,兩個(gè)黃色的點(diǎn)是定點(diǎn)从藤,綠色的是控制點(diǎn),于是畫出了這樣的圖锁蠕。


圖2

看左邊的圖夷野,中間有大片空白,看起來很浪費(fèi)屏幕空間荣倾,用戶體驗(yàn)不太好悯搔,于是想著怎么讓貝塞爾曲線過某個(gè)定點(diǎn),比如讓曲線過綠色的定點(diǎn)舌仍,而不是把控制點(diǎn)設(shè)在綠色的位置妒貌。

重訴一下,現(xiàn)有的方法是給出兩個(gè)定點(diǎn)和一個(gè)控制點(diǎn)铸豁,能畫一條曲線灌曙。
現(xiàn)在是要,已知兩個(gè)定點(diǎn)节芥,和過另外一個(gè)定點(diǎn)D在刺,畫一條曲線逆害。

我現(xiàn)在想讓這條曲線過綠色的點(diǎn),就像下圖那樣蚣驼,求控制點(diǎn)坐標(biāo)是多少魄幕?

圖3

看下圖,求出控制點(diǎn)坐標(biāo)的過程


圖4

由上圖就得出了控制點(diǎn)的坐標(biāo)颖杏,然后就可以畫出“圖3”的樣子了纯陨,實(shí)際中我覺得圖3貼太緊了,也不美觀输玷,于是 yc 乘了個(gè)0.6的系數(shù)队丝,即 yc = 0.6 * yc,就看起來比較順眼了欲鹏。

2.頁面結(jié)構(gòu)

頁面結(jié)構(gòu)大概是這樣机久,底下的 tableView 鋪滿整個(gè) view,然后藍(lán)色的headerView 加在 tableView 的上面赔嚎,不是加 tableView.tableHeaderView 上面哦膘盖,至于為什么你加加看就知道了。會(huì)跟著 tableview 動(dòng)

圖5

3.不規(guī)則事件點(diǎn)擊尤误,事件穿透

headerView 上有一個(gè)頭像侠畔,是可以點(diǎn)擊的,其他地方的點(diǎn)擊事件要傳給底下的 tableView 也叫事件穿透损晤,通過修改 hitTest 可以實(shí)現(xiàn)

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;

hitTest 主要用來做事件分發(fā)的软棺,可以實(shí)現(xiàn)不規(guī)則點(diǎn)擊,它在整個(gè) view 結(jié)構(gòu)上是遞歸的尤勋,深度優(yōu)先的喘落,今天不講算法,因?yàn)?hitTest 太厲害最冰,不規(guī)則點(diǎn)擊用 pointInside 函數(shù)就夠了瘦棋。

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;

這個(gè)函數(shù)會(huì)被 hitTest 調(diào)用,返回 false 表示點(diǎn)擊的不是自己暖哨,返回 true 表示點(diǎn)擊的是自己赌朋。
那么,我只要判斷點(diǎn)擊的 point 在不在頭像的那個(gè)圓圈里面就可以了篇裁,就是判斷點(diǎn)在不在圓內(nèi)沛慢,高中講過了,point 到圓心的距離小于半徑就表示在了达布,那么返回 true 就行团甲。具體的還是看代碼吧。
如果有多個(gè)控件往枣,需要自己確定每個(gè)控件的點(diǎn)擊區(qū)域伐庭。

最后還是上個(gè)代碼 下載地址,下載慢慢看吧分冈。

4.后期改進(jìn)

寫完這個(gè)博客突然想到一個(gè)還要改的地方圾另,就是當(dāng)用戶手指松開的時(shí)候,scrollViewWillEndDragging雕沉,這個(gè)方法內(nèi)判斷一下集乔,contentOffset.y 值,如果超過多少值坡椒,那么自動(dòng)回調(diào)一個(gè) block扰路,可實(shí)現(xiàn)下拉刷新。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末倔叼,一起剝皮案震驚了整個(gè)濱河市汗唱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丈攒,老刑警劉巖哩罪,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異巡验,居然都是意外死亡际插,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門显设,熙熙樓的掌柜王于貴愁眉苦臉地迎上來框弛,“玉大人,你說我怎么就攤上這事捕捂∩悖” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵绞蹦,是天一觀的道長力奋。 經(jīng)常有香客問我,道長幽七,這世上最難降的妖魔是什么景殷? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任攀芯,我火速辦了婚禮别凹,結(jié)果婚禮上糊肠,老公的妹妹穿的比我還像新娘屋谭。我一直安慰自己侨把,他們只是感情好谆焊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布厚掷。 她就那樣靜靜地躺著绿聘,像睡著了一般室埋。 火紅的嫁衣襯著肌膚如雪办绝。 梳的紋絲不亂的頭發(fā)上伊约,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音孕蝉,去河邊找鬼屡律。 笑死,一個(gè)胖子當(dāng)著我的面吹牛降淮,可吹牛的內(nèi)容都是我干的超埋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼佳鳖,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼霍殴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起系吩,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤来庭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后穿挨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巾腕,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年絮蒿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尊搬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡土涝,死狀恐怖佛寿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情但壮,我是刑警寧澤冀泻,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蜡饵,受9級(jí)特大地震影響弹渔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜溯祸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一肢专、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧焦辅,春花似錦博杖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至前方,卻和暖如春狈醉,著一層夾襖步出監(jiān)牢的瞬間廉油,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工苗傅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娱两,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓金吗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親趣竣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摇庙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件遥缕、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,107評(píng)論 4 62
  • 天氣真像小孩的臉,說變就變,真叫人無法理解.這幾天正處在高溫天氣中,突然,下了一場(chǎng)雨,霎時(shí),覺得涼爽多了,可能是上...
    快看有超人hqb閱讀 376評(píng)論 0 4
  • 又要面對(duì)失眠卫袒?此時(shí)此刻,失眠怎么辦单匣? 晚上醒著的時(shí)候夕凝,你在干什么?你在恐懼户秤。隨著時(shí)間一分一秒地過去码秉,你的恐懼不斷加...
    zphone閱讀 205評(píng)論 0 0
  • 一、 每次打開央視鸡号,我總會(huì)莫名地被一張陽光的臉龐所吸引转砖,這個(gè)人叫歐陽夏丹。 兩年前的一天鲸伴,我看過一篇對(duì)她的采訪手記...
    趙曉璃閱讀 3,048評(píng)論 6 90
  • 生活是一個(gè)圈 我們?cè)谌?nèi) 其他人在圈外 過去 總覺得是其他人在轉(zhuǎn) 在繞著我們轉(zhuǎn) 現(xiàn)在 才明白 其實(shí)圈外的大家都未曾...
    紫色桐木閱讀 268評(píng)論 0 0