不規(guī)則圖形布局

? ? ? ?前兩天做了一個不規(guī)則圖形布局窿祥,由于當(dāng)初做時沒有考慮清楚布局的思路和實(shí)現(xiàn)的邏輯株憾,所以走了不少彎路,試了很多辦法才做出來的∩柜茫現(xiàn)在有時間嗤瞎,將這類UI的布局思路先記下來,以防日后自己再遇到還會吃虧听系。

一贝奇、多排不規(guī)則圖形的布局

? ? ? ?類似這種不規(guī)則圖形的布局,為了方便適配靠胜,必須讓所有按鈕按比例布局掉瞳,否則無法完美適配各種機(jī)型的屏幕毕源。但這里有個問題,按鈕的寬高比是一定的陕习,所以我們必須將其中一個(寬高)作為基準(zhǔn)才能按比例擺放霎褐。從UI效果圖來看,以寬度作為基準(zhǔn)比較合適该镣,考慮到按鈕擺放的位置應(yīng)該是以寬度為準(zhǔn)冻璃,高度動態(tài)增長來設(shè)計(jì)的,否則按鈕距離左右邊距會發(fā)生變化损合,且若按高度來算省艳,寬度有可能會出現(xiàn)超過屏寬或離左右邊距太多的情況,所以我是按寬度為基準(zhǔn)來布局的嫁审。

? ? ? ? 這里還有一個問題就是寬度可以很容易固定(只需要添加左右邊距約束即可)跋炕,但是高度卻是時時變化的(隨屏寬不同而改變),所以若是按單個按鈕布局土居,就很難將這幾個按鈕的中心點(diǎn)擺放在背景圖的中心上(不可固定按鈕的上下邊距)枣购。我嘗試了多種方法,最后的靈感是將這幾個按鈕放到一個自己手動添加的view中擦耀,view只需要添加左右邊距約束棉圈,并將Y軸的中心與背景圖中心設(shè)為相等即可,然后在view里面添加這些按鈕眷蜓,view的大小會隨著按鈕的大小而改變分瘾,這樣就可以完美的實(shí)現(xiàn)這種不規(guī)則圖形的布局了。還有最重要的一點(diǎn)吁系,一定要將中間的按鈕擺放在最上層德召,否則它的點(diǎn)擊事件會被其他按鈕覆蓋。

二汽纤、一排不規(guī)則圖形的布局

? ? ? ? 看到這個UI效果圖上岗,首先腦海里想到的方法跟以往的布局一樣,將三個按鈕分別添加約束蕴坪,并按照比例擺放肴掷。由于這是個不規(guī)則圖形,不能簡單的將按鈕三等分背传,所以做法是將左右兩個按鈕的邊距固定呆瞻,中間按鈕的中心點(diǎn)與背景圖中心相等,以高度為基準(zhǔn)來算按鈕寬度径玖,這樣適配屏幕一定是沒有問題的(第一次只在6上面運(yùn)行了痴脾,效果和設(shè)計(jì)圖一樣)。

? ? ? ? 按理說梳星,切換屏幕得到的效果應(yīng)該是一樣的赞赖,但是我卻忽略了一個最重要的問題滚朵,跟第一種布局一樣,UI效果圖都是以寬度為基準(zhǔn)來設(shè)計(jì)的前域,可是我在這里卻以高度為基準(zhǔn)來布局(因?yàn)閷挾葻o法固定始绍,與第一種情況略有差異),所以切換屏幕得到的效果會導(dǎo)致按鈕之間的間距變大话侄,十分不美觀。之后的想法是通過手動修改圖片的尺寸(保持按鈕的大小不變)学赛,讓圖片之間的間距變小年堆,看起來更接近UI的效果。剛開始在6plus上調(diào)試的結(jié)果是可以的盏浇,基本可以達(dá)到UI的效果变丧,但是切換到5上面就不行了,因?yàn)?和6都是加載的@2x的圖片绢掰,且5上的圖片顯示已經(jīng)達(dá)到按鈕的最大飽滿度了痒蓬,再手動修改圖片尺寸,會導(dǎo)致圖片顯示不全滴劲,在6上也會受到影響攻晒,所以放棄了這種做法。最后參考安卓同事的建議班挖,將圖片切成整個背景的鲁捏,只是將后面的按鈕處理成透明,這樣一來萧芙,三個按鈕的約束都是相同的给梅,左右邊距均為0 ,以寬度為基準(zhǔn)算高度双揪,適配就不會再有任何問題了动羽。

? ? ? 到這里,不規(guī)則圖形的布局已經(jīng)完美的解決了渔期,但是功能卻有缺陷运吓,因?yàn)槿齻€按鈕的位置是完全重疊在一起的,所以不管你點(diǎn)擊哪個按鈕擎场,響應(yīng)的永遠(yuǎn)是最上層的按鈕(底下按鈕的點(diǎn)擊事件被覆蓋了)羽德。要怎么解決這個問題呢,很簡單迅办,只要讓按鈕的響應(yīng)區(qū)域?yàn)閳D片可視范圍即可(即是通過圖片的透明度來判斷按鈕的點(diǎn)擊能力)宅静,這里有兩個思路:1、重寫按鈕的點(diǎn)擊范圍方法(- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event ?)站欺,可以在這里畫出按鈕的響應(yīng)區(qū)域姨夹,如圓形纤垂,三角形等等(用貝塞爾曲線實(shí)現(xiàn)),這種做法不需要判斷圖片透明度磷账,相對來說比較簡單峭沦,但是該方法僅適用于不規(guī)則圖形是一類的情況(在這里就不適用,因?yàn)槿齻€按鈕的圖形都不相同)逃糟;2吼鱼、首先獲取圖片的透明度,然后通過透明度來判斷按鈕的點(diǎn)擊能力绰咽,該方法較為復(fù)雜菇肃,但是適用性廣,適用于任何圖形的按鈕(原理現(xiàn)在還沒看懂取募,先收藏琐谤,以后有時間再慢慢鉆研)。

獲取圖片透明度
判斷圖片的透明度
按鈕的響應(yīng)能力

? ? ? ? 這個方法的實(shí)現(xiàn)可以是按鈕的類別玩敏,或者自定義按鈕都可以斗忌,看個人喜好,如果是通過類別實(shí)現(xiàn)旺聚,則不需要做任何事情织阳,如果是通過自定義按鈕實(shí)現(xiàn),只需要將按鈕關(guān)聯(lián)起來即可翻屈。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陈哑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伸眶,更是在濱河造成了極大的恐慌惊窖,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厘贼,死亡現(xiàn)場離奇詭異界酒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嘴秸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門毁欣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岳掐,你說我怎么就攤上這事凭疮。” “怎么了串述?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵执解,是天一觀的道長。 經(jīng)常有香客問我纲酗,道長衰腌,這世上最難降的妖魔是什么新蟆? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮右蕊,結(jié)果婚禮上琼稻,老公的妹妹穿的比我還像新娘。我一直安慰自己饶囚,他們只是感情好帕翻,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著萝风,像睡著了一般熊咽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闹丐,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音被因,去河邊找鬼卿拴。 笑死,一個胖子當(dāng)著我的面吹牛梨与,可吹牛的內(nèi)容都是我干的堕花。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼粥鞋,長吁一口氣:“原來是場噩夢啊……” “哼缘挽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呻粹,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤壕曼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后等浊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腮郊,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年筹燕,在試婚紗的時候發(fā)現(xiàn)自己被綠了轧飞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡撒踪,死狀恐怖过咬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情制妄,我是刑警寧澤掸绞,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站忍捡,受9級特大地震影響集漾,放射性物質(zhì)發(fā)生泄漏切黔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一具篇、第九天 我趴在偏房一處隱蔽的房頂上張望纬霞。 院中可真熱鬧,春花似錦驱显、人聲如沸诗芜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伏恐。三九已至,卻和暖如春栓霜,著一層夾襖步出監(jiān)牢的瞬間翠桦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工胳蛮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留销凑,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓仅炊,卻偏偏與公主長得像斗幼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子抚垄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

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

  • 1蜕窿、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,969評論 3 119
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件呆馁、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,066評論 4 62
  • JS 變量松散類型的本質(zhì)浙滤,決定了變量只是在特定時間保存特定值的一個名字而已次询,而不存在定義某個變量的數(shù)據(jù)類型的規(guī)則,...
    饑人谷_Vomx閱讀 287評論 0 0
  • 距離上次去雪家已經(jīng)快一個多月了瓷叫,有點(diǎn)想念屯吊,順便也看看她寶貝長得有多大了,新生嬰兒是長得很快的摹菠。上次去盒卸,還沒長開呢...
    珙桐chen閱讀 161評論 0 0
  • 夢在哪里?夢在你日常的生活里次氨。 夢在哪里蔽介?夢在你前行的路途上。 夢在哪里?夢在你回眸的一瞬間虹蓄。 夢在哪里犀呼?夢在你仰...
    lm85閱讀 168評論 0 1