IOS项目之弹出动画三
前面写了弹出动画两个,今天做商城时又用到了,看着这个用着蛮普遍的,所以记了下来
// // mallMoreView.h // XQB // // Created by City--Online on 15/7/6. // // #import <UIKit/UIKit.h> typedef void (^SelectMallMoreMenu)(NSInteger index); @interface mallMoreView : UIView //单例 + (mallMoreView *)sharedManager; //block传值 @property(nonatomic,strong) SelectMallMoreMenu selectMallMoreMenu; @property(nonatomic,strong) NSArray *titles; @property(nonatomic,strong) UITableView *tableView; //window全屏显示 -(void)showInWindow; // View中显示 -(void)showInView:(UIView*)view; //在父视图view的相对位置为Frame -(void)showInView:(UIView*)view withFrame:(CGRect)frame; //消失视图 -(void)dismissView; @end
// // mallMoreView.m // XQB // // Created by City--Online on 15/7/6. // // #import "mallMoreView.h" #import "Global.h" @interface mallMoreView ()<UITableViewDataSource,UITableViewDelegate> @property(nonatomic,assign) BOOL open; @end @implementation mallMoreView + (mallMoreView *)sharedManager { static mallMoreView *managerInstance = nil; static dispatch_once_t predicate; dispatch_once(&predicate, ^{ managerInstance = [[self alloc] init]; managerInstance.backgroundColor=[UIColor colorWithWhite:0.1 alpha:0.1]; }); return managerInstance; } -(void)showInWindow { [self showInView:[UIApplication sharedApplication].keyWindow]; } -(void)showInView:(UIView*)view { [self showInView:view withFrame:CGRectMake(, , view.frame.size.width, view.frame.size.height)]; } -(void)showInView:(UIView*)view withFrame:(CGRect)frame { if (_open) { [self dismissView]; return; } _open=true; UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(dismissView)]; [self addGestureRecognizer:tapGesture]; self.frame=CGRectMake(, , frame.size.width, frame.size.height); self.alpha=0.0; if (_tableView==nil) { _tableView=[[UITableView alloc]init]; } _tableView.delegate=self; _tableView.dataSource=self; _tableView.backgroundColor=[UIColor colorWithWhite:0.2 alpha:0.5]; _tableView.tableHeaderView=[[UIView alloc]initWithFrame:CGRectZero]; _tableView.tableFooterView=[[UIView alloc]initWithFrame:CGRectZero]; [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"]; //动画效果 [UIView animateWithDuration: options:UIViewAnimationOptionCurveEaseOut animations:^{ self.alpha=1.0; _tableView.hidden=NO; } completion:nil ]; [view addSubview:self]; //要将TableView添加到view而不是self,否则不能选中TableView [view addSubview:_tableView]; } -(void)dismissView { _open=false; [UIView animateWithDuration: options:UIViewAnimationOptionCurveEaseOut animations:^{ self.alpha=0.0; _tableView.hidden=YES; } completion:^(BOOL finished) { [self removeFromSuperview]; [_tableView removeFromSuperview]; }]; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _titles.count; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; cell.backgroundColor=[UIColor clearColor]; cell.textLabel.text=[_titles objectAtIndex:indexPath.row]; cell.textLabel.textColor=[UIColor whiteColor]; cell.textLabel.font=[UIFont systemFontOfSize:]; cell.textLabel.textAlignment=NSTextAlignmentCenter; return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { ) { ; } return tableView.frame.size.height/_titles.count; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { _selectMallMoreMenu(indexPath.row); [self dismissView]; } -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } #ifdef __IPHONE_8_0 if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } if([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]){ [cell setPreservesSuperviewLayoutMargins:NO]; } #endif } @end
-(void)popMallMoreView:(id)sender { mallMoreView *moreView=[mallMoreView sharedManager]; moreView.tableView=[[UITableView alloc]init]; moreView.tableView.frame=CGRectMake(MAINWIDTH-, , , ); moreView.titles=@[@"回到首页",@"闪购订单",@"收货地址"]; moreView.selectMallMoreMenu=^(NSInteger index) { NSLog(@"%ld",index); }; [moreView showInView:self.view]; }
IOS项目之弹出动画三的更多相关文章
- IOS项目之弹出动画终结篇
在之前写过IOS项目之弹出动画一.IOS项目之弹出动画二.IOS项目之弹出动画三,今天来一个终极封装已经上传到Github上弹出动画总结篇UIPopoverTableView. UIPopoverTa ...
- IOS项目之弹出动画二
在IOS项目之弹出动画一中只是实现也功能,并没有体现面向对象的思想 ,今天就试着把它封装了一下,弹出视图的内容可以根据自定义,此处只是用UIDatePicker来演示 我把它传到了GitHub上 ...
- IOS项目之弹出动画一
小区宝首页导航栏左边有一个物业按钮,点击时会出现一个视图动画,之前用的是一个POP第三方,想着几个POP动画就要引用一堆的第三方有点麻烦,就试着自己写了一下,功能实现了,下一步就是优化将其封装一下.下 ...
- ios等待ualertview弹出动画完成后再跳转至其他页面
[self performSelector:@selector(popView:) withObject:nil afterDelay:2.0];
- 阶段一:为View设置阴影和弹出动画(天气应用)
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 上一篇阶段一:通过网络请求,获得并解析JSON数据(天气应用)完成了应用的核心功能,接下来就要对它进行优化.今天我 ...
- mac关闭渐隐和弹出动画效果
苹果系统应用程序的窗口和对话框每次使用的时候都有华丽的特效,但是如果你感觉这种特效显得有点慢(MacGG闲的蛋疼),那该如何取消掉他呢? 方法很简单,打开"终端"(Finder-& ...
- 清除ios系统alert弹出框的域名
清除ios系统alert弹出框的域名 <script> window.alert = function(name) { var iframe = document.createElemen ...
- iOS学习——键盘弹出遮挡输入框问题解决方案
在iOS或Android等移动端开发过程中,经常遇到很多需要我们输入信息的情况,例如登录时要输入账号密码.查询时要输入查询信息.注册或申请时需要填写一些信息等都是通过我们键盘来进行输入的,在iOS开发 ...
- 原生Js_实现简单的下拉折叠菜单(添加弹出动画效果)
用javascript实现简单的下拉折叠菜单效果 实现步骤 (a)获得各操作的dom对象: (b)在所有菜单按钮对象上添加单击事件: (c)设置所有菜单按钮样式为空,并将当前按钮的样式设置为“acti ...
随机推荐
- Python实现简单登陆验证(文件操作)
利用python编写一个简单的登陆验证 代码主要功能: 利用Python实现简单的登陆验证,代码主要有两个部分组成: 第一部分:登陆页面,作用是实现用户名和密码的输入 利用两个输入函数input()来 ...
- 初学Ionic
官网 https://ionicframework.com/ 如连接所示,可跳转到该前端框架的官网,在这里提供了两种方式可供大家学习: Code with the CLI Design with lo ...
- autofac JSON文件配置
autofac是比较简单易用的IOC容器.下面我们展示如何通过json配置文件,来进行控制反转. 需要用到以下程序集.可以通过nugget分别安装 Microsoft.Extensions.Confi ...
- uwp ,win10 post json
public static async Task<HttpResponseMessage> PostHttpstringrequest(string requesturl,string j ...
- [UWP开发]在windows10中设置壁纸~UserProfilePersonalizationSettings
在之前的wp8.1和wp8中,微软没有公开设置壁纸的API,只有一个设置锁屏的API,但在Windows10中,微软为我们提供了设置壁纸的API:TrySetWallpaperImageAsync,他 ...
- VS2013如何添加LIb库及头文件的步骤
在VS工程中,添加c/c++工程中外部头文件及库的基本步骤: 1.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. 2.添加文件引用 ...
- MySql数据库备份的几种方式
mysqldump工具备份 备份整个数据库 $> mysqldump -u root -h host -p dbname > backdb.sql 备份数据库中的某个表 $> mys ...
- java学习笔记—Servlet技术(11)
如果大家要开发一个动态的网站,那么就必须要学习一种动态的网页开发技术.那么在SUN提供的JavaEE中主要包含两种开发动态网页的技术:Servlet和JSP技术. Servlet技术简介 Servle ...
- iterrows() 函数对dataframe进行遍历
for循环遍历dataframe,返回有一个元祖类型,第一个是行的索引,第二个是series,是每一行的内容.
- JAVA日期——java.util.date类的操作
package com.hxzy.time; import java.text.SimpleDateFormat;import java.util.Date; public class DateDem ...