上拉式弹窗的实现

  有些弹窗如果点击按钮的同时就出现一个弹窗就显得有的突兀,这次实现的效果是点击按钮的同时弹窗由下往上弹出来,添加了动画效果:

1、首先创建一个弹出的View类,

在HTAlertView.h中:

@property (nonatomic, strong) void (^backBtnActionBlock)();

@property (weak, nonatomic) IBOutlet UIView *myView;

@property(nonatomic,strong) UIControl *huiseControl;

- (void)showInView:(UIView *) view;

+ (instancetype)getSimpleView;

2、在HTAlertView.m中:

- (void)awakeFromNib{

    _huiseControl=[[UIControl alloc]initWithFrame:CGRectMake(0, 0, UIBounds.size.width, UIBounds.size.height)];
    _huiseControl.backgroundColor=RGBACOLOR(0, 0, 0, 0.4);
    [_huiseControl addTarget:self action:@selector(huiseControlClick) forControlEvents:UIControlEventTouchUpInside];
    _huiseControl.alpha=0;
    self.backgroundColor = [UIColor whiteColor];
}

+ (instancetype)getSimpleView{

    NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"HTAlertView" owner:nil options:nil];
    return [objs lastObject];
}
- (void)showInView:(UIView *) view {

    if (_huiseControl.superview==nil) {
        [view addSubview:_huiseControl];
    }
    [UIView animateWithDuration:0.2 animations:^{
        _huiseControl.alpha=1;
    }];
    CATransition *animation = [CATransition  animation];
    animation.delegate = self;
    animation.duration = 0.2f;
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    animation.type = kCATransitionPush;
    animation.subtype = kCATransitionFromTop;
    [self.layer addAnimation:animation forKey:@"animation1"];
    self.frame = CGRectMake(0,view.frame.size.height - 355, [UIScreen mainScreen].bounds.size.width, 355);
    [view addSubview:self];

}
- (void)hideInView {

    self.hidden = YES;
    CATransition *animation = [CATransition  animation];
    animation.delegate = self;
    animation.duration = 0.2f;
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    animation.type = kCATransitionPush;
    animation.subtype = kCATransitionFromBottom;
    [self.layer addAnimation:animation forKey:@"animtion2"];
    [UIView animateWithDuration:0.2 animations:^{
        _huiseControl.alpha=0;
    }completion:^(BOOL finished) {
        [self removeFromSuperview];
        [_huiseControl removeFromSuperview];
    }];

}
- (IBAction)btnClick:(UIButton *)sender {

    if (self.backBtnActionBlock) {

        self.backBtnActionBlock();
    }
}

-(void)huiseControlClick{

    [self hideInView];
}

其中

#define UIBounds [[UIScreen mainScreen] bounds] //window外框大小
#define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:a]

最后在viewController中要弹窗的button实现方法即可

- (void)popupButtonClick
{
    HTAlertView *alert = [HTAlertView getSimpleView];

    alert.backBtnActionBlock = ^(){

        NSLog(@"sdgvet4wfdscx");
    };

    [alert showInView:self.view];
}

 其中有代码块可以回调得到View中的按钮触发

时间: 2024-07-28 21:44:07

上拉式弹窗的实现的相关文章

排产的两种方式(前推式与后拉式)在Optaplanner上的体现

生产计划的约束 在制定生产计划过程中,必然是存在某些制约因素,满足某些需求才能进行的,或是交期保证.或是产能限制.或是关键工序制约.即TOC理论 - 任何系统至少存在着一个制约因素/瓶颈:否则它就可能有无限的产出.就是说,如果不存在这个(或这些)制约因素,生产计划就没必要"排"了,只需随意地,毫无约束地把任意一个或多个生产任务纳入生产日程,都能满足生产.营业等所有业务要求.那也不需要人的智慧参投入其中了. 两种计划模式 而现实环境中,资源是有限的,且往往是在资源不足,并需要尽量满足制约

Web前端开发实战3:二级下拉式菜单之jQuery实现

大家都知道jQuery是一个框架,它对JS进行了封装,使其更方便使用.前面两篇博文分别是用CSS样式和JS实现 的,那么这篇就用jQuery来实现二级下拉式菜单. 使用JQuery实现需要用到的知识有: 1)使用$(function(){...})获取到想要作用的HTML元素. 2)通过使用children()方法寻找子元素. 3)通过使用show()方法来显示HTML元素. 4)通过使用hide()方法来隐藏HTML元素. 5)jQuery库引用方法: 第一种方法:将jQuery库下载到电脑上

Web前端开发实战2:二级下拉式菜单之JS实现

上一篇博文提到了二级下拉式菜单是用HTML和CSS实现的,我们这一篇来用JavaScript脚本实现下拉菜单的显 示和隐藏.使用 JavaScript方法实现我们需要用的知识有: 1)JS事件:onmouseover鼠标经过事件和onmouseout鼠标离开事件. 2)JS基础语法:使用function关键字定义函数. 3)DOM编程:getElementsByTagName()方法. 那么接下来就是我们制作的流程: 1)隐藏二级菜单:设置CSS样式,让二级菜单隐藏. 2)编写显示子菜单show

令人眼前一亮的下拉式终端 Tilda & Guake

前言 老夫是 Linux 的~~老~~用户. 大一的时候某不方便透露姓名的校内组织给了一个 Fedora 13 的安装光盘,然后老夫学会了重装 Windows . 大二的时候知道了 Ubuntu ,开始在虚拟机和双系统中来回切换. 大三的时候硬盘安装了 CentOS ,开始正式成为 Linux 的用户. 大四的时候被 Debian 俘获. 毕业后的第一年在老板的威逼利诱之下,重新使用 Ubuntu . 现在老夫是 Debian 的忠实用户. 老夫一直在强调是 Linux 的用户,那是因为真的只是

C#实现日历样式的下拉式计算器

C#实现日历样式的下拉式计算器 原文地址:http://developer.51cto.com/art/201508/487486.htm 如果我们正在做一个类似于库存控制和计费系统的项目,有些部分可能必须手动计算数值.因此,用户就不得不使用计算器得到结果,再填入到输入字段中,或者在工作窗口上单独打开一个计算器窗口.总之,各种不便和麻烦. 本文介绍了如何在Visual Studio中创建用户控件来显示下拉式计算器,弹出效果类似于日历控件. 介绍 如果我们正在做一个类似于库存控制和计费系统的项目,

自个儿写Android的下拉刷新/上拉加载控件

前段时间自己写了一个能够"通用"的,支持下拉刷新和上拉加载的自定义控件.可能现如今这已经不新鲜了,但有兴趣的朋友还是可以一起来看看的. 与通常的View配合使用(比如ImageView) 与ListView配合使用 与RecyclerView配合使用 与SrcollView配合使用 局部刷新(但想必这种需要实际应该还是不多的-.) 好啦,效果大概就是这样.如果您看后觉得有一点兴趣.那么,以下是相关的信息: GitHub地址: https://github.com/RawnHwang/S

QPushButton下拉式菜单(是否取消下拉三角,是否check)

给QPushButton添加菜单的示例,前面已经有了三种方式: Qt学习之给QPushButton添加菜单ActionsContextMenu方法 Qt学习之给QPushButton添加菜单CustomContextMenu方法 Qt学习之给QPushButton添加菜单DefaultContextMenu方法 今天再提供一种方式,就是给QPushButton添加下拉式菜单.类似于Combobox一样.前面三种方式实现的都是光标在哪个位置,菜单就在哪里显示.而下拉式菜单只在按钮的下方显示,同时会

Web前端开发实战6:CSS实现导航菜单结合二级下拉式菜单的简单变换

前面几篇博文都在讲导航菜单和二级下拉式菜单,其实有很多方法都可以实现的,具体的情况还要视情况而定. 在后面学习到jQuery框架之后,会有更丰富的动画效果,由于在学习Ajax和jQuery的初步阶段,对于很多的复杂的导 航菜单和二级下拉式菜单没法做,但是学习了CSS和JS还是能实现一些简单的变换的.这篇博文就来说说用CSS实现 导航菜单结合二级下拉式菜单的两个简单变换吧. 首先还是在前面博文的基础上加以实现,其实只用HTML和CSS还是可以做出不错的效果,但是相较于JS和 jQuery来说就有很

PropertyGrid—为复杂属性提供下拉式编辑框和弹出式编辑框

零.引言 PropertyGrid中我们经常看到一些下拉式的编辑方式(Color属性)和弹出式编辑框(字体),这些都是为一些复杂的属性提供的编辑方式,本文主要说明如何实现这样的编辑方式. 一.为属性提供编辑类 弹出式和下拉式是如何实现的呢,这需要为属性提供一个专门的编辑类..Net为我们提供了一个System.Drawing.Design.UITypeEditor类,它是所有编辑类的基类,从他继承出了诸如ColorEditor.FontEditor的类,因此我们可以在属性框中编辑颜色和字体.定义