p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #78492a }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #d12f1b }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4f8187 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ba2da2 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #703daa }
p.p8 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
p.p9 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
p.p10 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #272ad8 }
span.s1 { }
span.s2 { color: #272ad8 }
span.s3 { color: #78492a }
span.s4 { color: #ba2da2 }
span.s5 { color: #000000 }
span.s6 { color: #703daa }
span.s7 { color: #3e1e81 }
span.s8 { color: #31595d }
span.s9 { color: #d12f1b }
span.s10 { font: 14.0px "PingFang SC"; color: #d12f1b }
span.s11 { color: #4f8187 }
span.s12 { font: 14.0px "PingFang SC" }

里面的坐标可能有问题 可以自己修改

#define kSelfBackgroundColor [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5f];

#import "HBActionSheet.h"

@interface HBActionSheet ()

@property (nonatomic, strong) UIView *btnBgView;

@property (nonatomic, strong) UIButton *selectedBtn;

@end

@implementation HBActionSheet

- (instancetype)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

self.frame = [UIScreen mainScreen].bounds;

UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 368 - 64)];

view.backgroundColor = kSelfBackgroundColor;

[self addSubview:view];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hiddenActionSheet:)];

[view addGestureRecognizer:tap];

[self loadingUI];

}

return self;

}

- (void) loadingUI{

CGSize size = [[UIScreen mainScreen] bounds].size;

UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, size.width, 45)];

titleLabel.text = @"支付方式";

titleLabel.textAlignment = NSTextAlignmentCenter;

titleLabel.backgroundColor = [UIColor redColor];

titleLabel.font = [UIFont systemFontOfSize:16];

[self.btnBgView addSubview:titleLabel];

UIButton *cancelBtn = [UIButton buttonWithType:UIButtonTypeCustom];

cancelBtn.frame = CGRectMake(size.width - 25 - 15, 11, 24, 24);

[cancelBtn setImage:[UIImage imageNamed:@"close"] forState:UIControlStateNormal];

[cancelBtn addTarget:self action:@selector(hiddenActionSheet) forControlEvents:UIControlEventTouchUpInside];

[self.btnBgView addSubview:cancelBtn];

UILabel *priceLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(titleLabel.frame), size.width, 70)];

priceLabel.backgroundColor = [UIColor whiteColor];

priceLabel.text = @"共¥30.00";

priceLabel.textAlignment = NSTextAlignmentCenter;

priceLabel.font = [UIFont systemFontOfSize:24];

[self.btnBgView addSubview:priceLabel];

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:priceLabel.text];

[attributedString addAttribute:NSForegroundColorAttributeName

value:[UIColor grayColor]

range:NSMakeRange(0, 1)];

[attributedString addAttribute:NSFontAttributeName

value:[UIFont systemFontOfSize:16]

range:NSMakeRange(0, 1)];

priceLabel.attributedText = attributedString;

NSArray *titleArray = [[NSArray alloc]initWithObjects:@"余额",@"支付宝支付",@"微信支付",@"App Pay", nil];

for (int j = 0; j < 4; j++) {

UILabel *payStyleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(priceLabel.frame) + j*50 , size.width, 50)];

payStyleLabel.text = [NSString stringWithFormat:@"           %@",titleArray[j]];

payStyleLabel.font  = [UIFont systemFontOfSize:16];

payStyleLabel.userInteractionEnabled = YES;

[self.btnBgView addSubview:payStyleLabel];

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(15, 15, 20, 20)];

imageView.backgroundColor = [UIColor redColor];

[payStyleLabel addSubview:imageView];

UIButton *payBtn = [UIButton buttonWithType:UIButtonTypeCustom];

payBtn.frame = CGRectMake(size.width - 24 - 15, 13, 24, 24);

payBtn.tag = j + 1;

[payBtn setImage:[UIImage imageNamed:@"selectNo"] forState:UIControlStateNormal];

[payBtn setImage:[UIImage imageNamed:@"selectNo"] forState: UIControlStateHighlighted];

[payBtn setImage:[UIImage imageNamed:@"selectYes"] forState:UIControlStateSelected];

[payBtn setImage:[UIImage imageNamed:@"selectYes"]forState:UIControlStateSelected | UIControlStateHighlighted];

[payBtn addTarget:self action:@selector(selectPayStyle:) forControlEvents:UIControlEventTouchUpInside];

[payStyleLabel addSubview:payBtn];

}

UIButton *confirmPayBtn = [UIButton buttonWithType:UIButtonTypeCustom];

confirmPayBtn.backgroundColor = [UIColor greenColor];

[confirmPayBtn addTarget:self action:@selector(confirmPay) forControlEvents:UIControlEventTouchUpInside];

[confirmPayBtn setTitle:@"确认支付" forState:UIControlStateNormal];

confirmPayBtn.titleLabel.font = [UIFont systemFontOfSize:18];

confirmPayBtn.frame = CGRectMake(0, self.btnBgView.frame.size.height - 49, size.width, 49);

[self.btnBgView addSubview:confirmPayBtn];

// 显示

[UIView animateWithDuration:0.3 animations:^{

CGRect frame = self.btnBgView.frame;

frame.origin.y =  size.height - frame.size.height - 64;

self.btnBgView.frame = frame;

}];

}

- (void)confirmPay{

}

- (void)selectPayStyle:(UIButton *)btn{

if (btn != self.selectedBtn) {

self.selectedBtn.selected = NO;

btn.selected = YES;

self.selectedBtn = btn;

}else{

self.selectedBtn.selected = YES;

}

}

- (void)hiddenActionSheet{

[UIView animateWithDuration:0.3 animations:^{

CGRect frame = self.btnBgView.frame;

frame.origin.y = [UIScreen mainScreen].bounds.size.height;

self.btnBgView.frame = frame;

} completion:^(BOOL finished) {

[self removeFromSuperview];

}];

}

- (void)hiddenActionSheet:(UITapGestureRecognizer *)tap{

if ([tap.view isKindOfClass:[UIButton class]] || [tap.view isKindOfClass:[UILabel class]] || [tap.view isKindOfClass:[UIImageView class]]) {

return;

}

[UIView animateWithDuration:0.3 animations:^{

CGRect frame = self.btnBgView.frame;

frame.origin.y = [UIScreen mainScreen].bounds.size.height;

self.btnBgView.frame = frame;

} completion:^(BOOL finished) {

[self removeFromSuperview];

}];

}

- (UIView *)btnBgView{

if (!_btnBgView) {

CGSize size = [[UIScreen mainScreen] bounds].size;

_btnBgView = [[UIView alloc]init];

_btnBgView.backgroundColor = [UIColor colorWithRed:223.0f/255.0f green:226.0f/255.f blue:236.0f/255.0f alpha:1];

_btnBgView.frame = CGRectMake(0, size.height - 368 - 64, size.width ,size.height - 368);

[self addSubview:_btnBgView];

}

return _btnBgView;

}

@end

效果图:

iOS自定义弹出视图的更多相关文章

  1. iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码

    iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...

  2. iOS 仿看了吗应用、指南针测网速等常用工具、自定义弹出视图框架、图片裁剪、内容扩展等源码

    iOS精选源码 扩展内容的cell - folding-cell 一个近乎完整的可识别中国身份证信息的Demo 可自动快速... JPImageresizerView 仿微信的图片裁剪 带年月和至今以 ...

  3. iOS实现自定义的弹出视图(popView)

    前段时间,在项目中有个需求是支付完成后,弹出红包,实现这么一个发红包的功能.做了最后,实现的效果大致如下: 一.使用方法 整个ViewController的代码大致如下 // //  SecondVi ...

  4. IOS弹出视图 LewPopupViewController

    LewPopupViewController是一款IOS弹出视图软件.iOS 下的弹出视图.支持iPhone/iPad. 软件截图 使用方法 弹出视图 1 2 3 4 5 PopupView *vie ...

  5. iOS模态弹出半透明视图控制器

    项目中需要实现点击按钮出现的视图全屏覆盖,呈半透明状态可以看到下面的视图? 解决方案: 绕了很多弯路原来可以使用模态弹出一个视图控制器 在iOS8之后只需要设置一个最新的属性 SecondViewCo ...

  6. js自定义弹出框

    js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...

  7. android自定义弹出框样式实现

    前言: 做项目时,感觉Android自带的弹出框样式比较丑,很多应用都是自己做的弹出框,这里也试着自己做了一个. 废话不说先上图片: 实现机制 1.先自定义一个弹出框的样式 2.自己实现CustomD ...

  8. CSS3/jQuery自定义弹出窗口

    简单演示一下,精简了演示效果和css样式文件,更利于在项目中的实际应用 引入style.css   index.js <!DOCTYPE HTML PUBLIC "-//W3C//DT ...

  9. react native仿微信性别选择-自定义弹出框

    简述 要实现微信性别选择需要使用两部分的技术: 第一.是自定义弹出框: 第二.单选框控件使用: 效果 实现 一.配置弹出框 弹出框用的是:react-native-popup-dialog(Git地址 ...

随机推荐

  1. Asp.Net 网站一键部署技术(上)

    用垃圾而不稳定的网速上传N次压缩包都传不上去? 手动决定哪些覆盖不覆盖? 覆盖了web.config又要手动修改连接字符串? 不注意把原有配置搞丢了? …… 貌似从此早下班和休假与你无缘了. 所以!! ...

  2. 工资不高也要给自己放假 这几款APP估计你用得上

    我是这样的一个人,我宁愿工资不高,只要给我足够的假期,那我就满足了.都说上班就是为了赚钱,但如果身体不好,赚再多的钱也是无福享受,所以建议各位,有机会的话,一定要抽出时间去旅游,去放松. 现在我们外出 ...

  3. 进程间通信系列 之 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例

    进程间通信系列 之 概述与对比   http://blog.csdn.net/younger_china/article/details/15808685  进程间通信系列 之 共享内存及其实例   ...

  4. 蓝桥杯-有奖猜谜-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  5. TFS下载文件已损坏问题

    近日在把一个数千人使用的TFS环境进行机房迁移时,从现有的服务器集群中整体迁移到另外一个服务器集群中,经过周密的设计迁移方案,充分验证方案中的各个关键过程,最终在几乎对数千人用户完全透明,没有任何感知 ...

  6. python3 selenium 切换窗口的几种方法

    第一种方法: 使用场景: 打开多个窗口,需要定位到新打开的窗口 使用方法: # 获取打开的多个窗口句柄windows = driver.window_handles# 切换到当前最新打开的窗口driv ...

  7. [原创]Jquery实现表格内容点击隐藏显示内容

    1.首先看效果,点击红色字体,可是查看全部文字内容 2.JS实现 思路:将Ajax获得的数据,一份截取,一份不变,放到td里面,分别用span装着. 然后通过display属性,进行切换

  8. CSS3特效----制作3D旋转照片展示区

    任务一.制作多背景 提示:上层有一个径向渐变,渐变图像farthest-side ellipse at center,  rgba(246,241,232,.85) 39%,rgba(212,204, ...

  9. PL/SQL + Oracle客户端 配置记录

    oracle一直都没怎么用. oracle pl/sql也是在别人帮助下完成配置. 这次电脑重装后,自己搞定总结了下怎么配置. 1.下载Oracle 客户端. 安装的版本是win64_11gR2_cl ...

  10. java内存模型6-final

    与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问.对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象 ...