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(0, 0, 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(0, 0, 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:0.1 delay:0 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:0.1 delay:0 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:18];
    cell.textLabel.textAlignment=NSTextAlignmentCenter;
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (_titles.count<=0) {
        return 0;
    }
    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-130, 0, 120, 150);
    moreView.titles[email protected][@"回到首页",@"闪购订单",@"收货地址"];
    moreView.selectMallMoreMenu=^(NSInteger index)
    {
        NSLog(@"%ld",index);
    };
    [moreView showInView:self.view];

}

时间: 2024-10-09 04:00:26

IOS项目之弹出动画三的相关文章

IOS项目之弹出动画二

在IOS项目之弹出动画一中只是实现也功能,并没有体现面向对象的思想 ,今天就试着把它封装了一下,弹出视图的内容可以根据自定义,此处只是用UIDatePicker来演示 我把它传到了GitHub上   https://github.com/ywcui/YvanDatePicker.git 一.新建一个类YWDatePicker集成UIView // YvanDatePicker.h #import <UIKit/UIKit.h> typedef void (^selectDate)(NSDate

Microsoft Visual Studio2013 新建项目时“弹出未找到约束”对话框

由于长时间不在公司,再次打开Microsoft Visual Studio2013 新建项目时“弹出未找到约束”对话框, 让我甚是郁闷.工作紧,任务中,赶紧上网收集解决办法.网上针对此现象主要多种解决方式:方法一:卸载已安装的补丁 根据网上提供的方法,“在程序中找到KB2833957和KB2840642这两个补丁,然后将其卸载”,但是在已安装的更新中未找到这两个补丁. 此方法行不通,赶紧再尝试. 方法二:安装补丁KB2781514 微软官方下载地址  KB2781514   http://www

JS实现边栏弹出动画

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS实现边栏弹出动画</title> <style type="text/css"> *{margin:0;padding:0;} #box{width:200px;height:200px;background-color:

关于vs2010新建MFC项目时弹出当前页面的脚本发生错误的解决方法

最近装了vs2010但是在新建项目的时候老是弹出当前页面的脚本发生错误,问了好多人网上也查了,结果还是不行,后来就自己尝试着解决,没想到竟然成功了,纪念一下,帮助需要解决此问题的人解决这样的问题. 正文: 首先看看问题,插入图片 我们就根据它提示错误的地方,找到它所提示的位置,比如第一张提示提示Program Files (x86)\Microsoft Visual Studio 10.0\VC\VCWizards\AppWiz\MFC\Application\html\2052\default

VS2013新建MVC项目时弹出此模板尝试加载组件程序集”NuGet.VisualStudio.Interop,Version=1.0.0.0.......&quot; 的解决办法

电脑刚装完系统,下载了最新版的VisualStudio2013,安装完毕后打算新建项目试一下是否好用,选择新建ASP.NET MVC项目后,稍等片刻,发现VS弹出以下窗口: 于是顿感纳闷,重启系统后再尝试亦是如此.折腾一番,发现原来是VisualStudio从2012版本就开始使用NuGet来管理项目和程序集引用了.出现这个问题是因为没有安装NuGet包管理器.然后果断在VS的"工具>>扩展和更新>>联机"中搜索"NuGet Package Manag

iOS自定义提示弹出框(类似UIAlertView)

菜鸟一枚,大神勿喷.自己在牛刀小试的时候,发现系统的UIAlertView有点不喜欢,然后就自己自定义了一个UIAlertView,基本上实现了系统的UIAlertView,可以根据项目的需求修改UIAlertView的颜色.欢迎大神多多指导.不胜感激! 效果图: Paste_Image.png --------------直接贴代码---------不喜勿喷----------大神多多指导.不胜感激!------- #import <UIKit/UIKit.h> typedef void(^

elementUI 弹窗组件全局和局部 弹入弹出动画效果实现

前言:element  <el-dialog> 标签有自带的动画效果,要想自定义动画效果,需要覆盖自带效果,分为两类: 1.全局设置 如要设置左侧或上下弹出,只需全局样式 处粘贴如下代码: @keyframes dialog-fade-in { 0% { transform: translate3d(100%,0 , 0); opacity: 0; } 100% { transform: translate3d(0, 0, 0); opacity: 1; } } @keyframes dial

iOS 模拟器键盘弹出以及中文输入

1.虚拟键盘的弹出与收起切换: 快捷键:command+shift+K 2.中文输入: Xcode 菜单项 --> Product --> Scheme --> Edit Scheme -->  Run --> Option --> Application Region 设置为 『中国』 重新运行程序,如下图所示就可以切换输入法了

iOS实现TableView中Cell出现时弹出动画

发现一个简单的方式可以让TableView变得非常的炫酷,语言描述太苍白,直接看图吧: 在任何有cell先出现在屏幕上的时候都会有这么一个效果,非常的流畅,也非常有意思(忍不住不停地把玩..).实现起来也非常简单,iOS原生支持,几行代码就可以搞定,在众多的tableview代理方法中,我们利用下面这个方法: -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtInde