iOS 菜單顯示一種方式

前言

前幾天在群里看見(jiàn)一個(gè)朋友說(shuō)這種平鋪菜單用哪個(gè)控件寫(xiě)比較好卫漫,有的人說(shuō)用UICollectionView,有的說(shuō)用UIButton自己計(jì)算。我今天上午正好暫時(shí)沒(méi)接口凌蔬。寫(xiě)了一下,最后還是感覺(jué)用UIButton比較好用,沒(méi)有必要用UICollectionView浸锨。寫(xiě)個(gè)Demo,大家如果需要這個(gè)思路可以看一下。

Demo地址


正文

最重要的一個(gè)方法就是怎么讓菜單按鈕顯示正常:

/** *? 數(shù)據(jù)顯示 */- (void)loadData:(UIView *)bgView whatArray:(NSMutableArray *)array{? __block CGFloat weakX = local;?

?__block CGFloat weakY = local;

? ? for(int i = 0;i < array.count;i++)?

?? {? ? ? ?

?[UIView animateWithDuration:0.2 delay:0.1 usingSpringWithDamping:0.5 initialSpringVelocity:0.1 options:UIViewAnimationOptionBeginFromCurrentState animations:^{? ? ? ? ? ??

//創(chuàng)建按鈕? ? ? ? ? ??

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];? ? ? ? ? ?

?btn.tag = i+1;? ? ? ? ? ??

//判斷是否是選中的數(shù)組? ? ? ? ? ?

?BOOL isS = NO;? ? ? ? ? ?

?if (array.count == self.sMenuArray.count) {? ? ?

?? ? ? ? ? isS = YES;? ? ? ? ? ? ? ?

?for(int i=0; i= self.view.frame.size.width - locaX) {

weakX = locaX;

weakY +=btnH + 5;

}

btn.frame = CGRectMake(weakX, weakY, btnW, btnH);

//判斷下一次xy位置

weakX += btnW + locaX;

if (weakX >= self.view.frame.size.width - locaX) {

weakX = locaX;

weakY += btnH + 5;

}

[bgView addSubview:btn];

btn.layer.cornerRadius = btn.frame.size.width /10;

btn.layer.masksToBounds = YES;

btn.layer.borderWidth = 1;

btn.layer.borderColor = [UIColor colorWithWhite:0.000 alpha:0.105].CGColor;

} completion:^(BOOL finished) {

}];

}

}

知道了如何顯示菜單按鈕之后版姑,其他的就簡(jiǎn)單了柱搜。點(diǎn)擊菜單按鈕把它移動(dòng)到常用菜單處:

/**

*? 按鈕事件

*

*? @param sender <#sender description#>

*/

- (void)doSomething:(UIButton *)sender

{

//判斷按鈕處于哪個(gè)區(qū)域

if (sender.tag<100) {

// 從menuarray取出這個(gè)數(shù)據(jù)放到smenuarray里面

NSInteger index = sender.tag - 1;

[self.sMenuArray addObject:self.menuArray[index]];

[self.menuArray removeObjectAtIndex:index];

}else

{

// 從smenuarray取出這個(gè)數(shù)據(jù)放到smenuarray里面

NSInteger index = sender.tag - 1 - 100;

[self.menuArray addObject:self.sMenuArray[index]];

[self.sMenuArray removeObjectAtIndex:index];

}

//數(shù)據(jù)重新加載,把上一次數(shù)據(jù)顯示去除

for(UIView *view in [self.dataView subviews])

{

[view removeFromSuperview];

}

for (UIView *view in [self.selectedView subviews]) {

[view removeFromSuperview];

}

[self loadData:self.dataView whatArray:self.menuArray];

[self loadData:self.selectedView whatArray:self.sMenuArray];

}

在代碼里我已經(jīng)把每一步操作說(shuō)的很清楚了,大家如果感興趣可以去下載運(yùn)行一下剥险。 運(yùn)行截圖:


結(jié)語(yǔ)

我是程序員聪蘸,我為自己代言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子健爬,更是在濱河造成了極大的恐慌控乾,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娜遵,死亡現(xiàn)場(chǎng)離奇詭異蜕衡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)设拟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)慨仿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蒜绽,你說(shuō)我怎么就攤上這事镶骗。” “怎么了躲雅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵鼎姊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我相赁,道長(zhǎng)相寇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任钮科,我火速辦了婚禮唤衫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绵脯。我一直安慰自己佳励,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布蛆挫。 她就那樣靜靜地躺著赃承,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悴侵。 梳的紋絲不亂的頭發(fā)上瞧剖,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音可免,去河邊找鬼抓于。 笑死,一個(gè)胖子當(dāng)著我的面吹牛浇借,可吹牛的內(nèi)容都是我干的捉撮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逮刨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呕缭!你這毒婦竟也來(lái)了堵泽?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤恢总,失蹤者是張志新(化名)和其女友劉穎迎罗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體片仿,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纹安,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砂豌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厢岂。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阳距,靈堂內(nèi)的尸體忽然破棺而出塔粒,到底是詐尸還是另有隱情,我是刑警寧澤筐摘,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布卒茬,位于F島的核電站,受9級(jí)特大地震影響咖熟,放射性物質(zhì)發(fā)生泄漏圃酵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一馍管、第九天 我趴在偏房一處隱蔽的房頂上張望郭赐。 院中可真熱鬧,春花似錦确沸、人聲如沸捌锭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舀锨。三九已至,卻和暖如春宛逗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盾剩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工雷激, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人告私。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓屎暇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親驻粟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子根悼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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