iOS 菜单显示一种方式

作者: 沉默学飞翔 | 来源:发表于2016-01-28 13:39 被阅读418次

前言

前几天在群里看见一个朋友说这种平铺菜单用哪个控件写比较好,有的人说用UICollectionView,有的说用UIButton自己计算。我今天上午正好暂时没接口。写了一下,最后还是感觉用UIButton比较好用,没有必要用UICollectionView。写个Demo,大家如果需要这个思路可以看一下。

Demo地址


正文

最重要的一个方法就是怎么让菜单按钮显示正常:

/** *  数据显示 */- (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:^{            

//创建按钮            

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];           

 btn.tag = i+1;            

//判断是否是选中的数组           

 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) {

}];

}

}

知道了如何显示菜单按钮之后,其他的就简单了。点击菜单按钮把它移动到常用菜单处:

/**

*  按钮事件

*

*  @param sender <#sender description#>

*/

- (void)doSomething:(UIButton *)sender

{

//判断按钮处于哪个区域

if (sender.tag<100) {

// 从menuarray取出这个数据放到smenuarray里面

NSInteger index = sender.tag - 1;

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

[self.menuArray removeObjectAtIndex:index];

}else

{

// 从smenuarray取出这个数据放到smenuarray里面

NSInteger index = sender.tag - 1 - 100;

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

[self.sMenuArray removeObjectAtIndex:index];

}

//数据重新加载,把上一次数据显示去除

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];

}

在代码里我已经把每一步操作说的很清楚了,大家如果感兴趣可以去下载运行一下。 运行截图:

结语

我是程序员,我为自己代言

相关文章

  • iOS 菜单显示一种方式

    前言 前几天在群里看见一个朋友说这种平铺菜单用哪个控件写比较好,有的人说用UICollectionView,有的说...

  • Android仿qq侧滑菜单

    我们经常能看到各种app中都有应用侧滑菜单(SlidingMenu),效果很好的一种显示方式,今天我就向大家展示可...

  • Android:在活动中使用 Menu

    Android提供一种隐藏式的菜单栏,不占用显示空间又能实现菜单功能。 一、菜单显示 首先在res目录下创建一个m...

  • 跟着斯坦福白胡子老头学Alert

    iOS使用UIAlertController类实现基本的对话框、单选菜单功能,可以显示标题、内容、选项、按钮、输入...

  • 说说 Android 的 Material Design 设计(

    滑动菜单指的是:菜单项在初始状态下是隐藏的,用户可以通过滑动的方式将菜单显示出来。 1 DrawerLayout ...

  • 详解UIModalPresentationStyle

    iOS显示ViewController的方式有两种:Push和Modal。当以Modal方式显示ViewContr...

  • Vue 插槽 slot 学习

    看上面的代码,父模板里面显示子模板 ,显示结果是不会显示菜单1 菜单2 的. 那如果想在子模板里面显示菜单1 菜单...

  • 工作笔记六

    react-native ios和android的兼容性问题: IOS的顶部状态栏(显示手机电池的顶部菜单栏)默认...

  • wap版本网站通用样式和rem换算

    移动端常用样式汇总去除ios 按钮按下的默认高亮效果 ios 触摸并按住触摸目标时候,禁止或显示系统默认菜单 文本...

  • App系统设置-创建一个简单的设置菜单

    1 系统设置简单介绍 在iOS系统的设置菜单中,可以显示某一个app的设置菜单,从而影响app的行为,如下图所示:...

网友评论

    本文标题: iOS 菜单显示一种方式

    本文链接:https://www.haomeiwen.com/subject/qhhjkttx.html