iOS自定义弹出视图
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自定义弹出视图的更多相关文章
- iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码
iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...
- iOS 仿看了吗应用、指南针测网速等常用工具、自定义弹出视图框架、图片裁剪、内容扩展等源码
iOS精选源码 扩展内容的cell - folding-cell 一个近乎完整的可识别中国身份证信息的Demo 可自动快速... JPImageresizerView 仿微信的图片裁剪 带年月和至今以 ...
- iOS实现自定义的弹出视图(popView)
前段时间,在项目中有个需求是支付完成后,弹出红包,实现这么一个发红包的功能.做了最后,实现的效果大致如下: 一.使用方法 整个ViewController的代码大致如下 // // SecondVi ...
- IOS弹出视图 LewPopupViewController
LewPopupViewController是一款IOS弹出视图软件.iOS 下的弹出视图.支持iPhone/iPad. 软件截图 使用方法 弹出视图 1 2 3 4 5 PopupView *vie ...
- iOS模态弹出半透明视图控制器
项目中需要实现点击按钮出现的视图全屏覆盖,呈半透明状态可以看到下面的视图? 解决方案: 绕了很多弯路原来可以使用模态弹出一个视图控制器 在iOS8之后只需要设置一个最新的属性 SecondViewCo ...
- js自定义弹出框
js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...
- android自定义弹出框样式实现
前言: 做项目时,感觉Android自带的弹出框样式比较丑,很多应用都是自己做的弹出框,这里也试着自己做了一个. 废话不说先上图片: 实现机制 1.先自定义一个弹出框的样式 2.自己实现CustomD ...
- CSS3/jQuery自定义弹出窗口
简单演示一下,精简了演示效果和css样式文件,更利于在项目中的实际应用 引入style.css index.js <!DOCTYPE HTML PUBLIC "-//W3C//DT ...
- react native仿微信性别选择-自定义弹出框
简述 要实现微信性别选择需要使用两部分的技术: 第一.是自定义弹出框: 第二.单选框控件使用: 效果 实现 一.配置弹出框 弹出框用的是:react-native-popup-dialog(Git地址 ...
随机推荐
- Spring框架 jar包下载
Spring框架下载 打开网址https://repo.spring.io 点击左侧边栏第二个按钮 点击 在输入框输入spring-framework点击Search 找到你需要的版本下载就好 教程到 ...
- 基于Struts2,Spring4,Hibernate4框架的系统架构设计与示例系统实现
笔者在大学中迷迷糊糊地度过了四年的光景,心中有那么一点目标,但总感觉找不到发力的方向. 在四年间,尝试写过代码结构糟糕,没有意义的课程设计,尝试捣鼓过Android开发,尝试探索过软件工程在实际开发中 ...
- asp.net 母版-页脚制作
1.母版创建流程略过. 2.创建母版页css:Site.css body { } .linkButton{ text-decoration:none; color:whitesmoke; } 3.母版 ...
- vue2.0 组件通信
组件通信: 子组件要想拿到父组件数据 props 子组件不允许直接给父级的数据, 赋值操作如果想更改,父组件每次穿一个对象给子组件, 对象之间引用. 例子: <script> window ...
- 通过批处理 安装 mongodb和设置身份验证
1.首先需要 mongodb.msi安装包 2.mongodb的配置文件mongod.cfg 内容如下: systemLog: destination: file path: "D:/mon ...
- 用户交互式命令:read
read命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合.该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开. 语法 read [option]... [name . ...
- Java学习笔记——排序算法之进阶排序(堆排序与分治并归排序)
春蚕到死丝方尽,蜡炬成灰泪始干 --无题 这里介绍两个比较难的算法: 1.堆排序 2.分治并归排序 先说堆. 这里请大家先自行了解完全二叉树的数据结构. 堆是完全二叉树.大顶堆是在堆中,任意双亲值都大 ...
- HAProxy的三种不同类型配置方案
haproxy是一款功能强大.灵活好用反向代理软件,提供了高可用.负载均衡.后端服务器代理的功能,它在7层负载均衡方面的功能很强大(支持 cookie track, header rewrite等等) ...
- HDFS 架构简述
HDFS 架构简述 Hadoop分布式文件系统(HDFS)是一个分布式的文件系统,运行在廉价的硬件上.它与现有的分布式文件系统有很多相似之处.然而与其他的分布式文件系统的差异也是显着的.HDFS是高容 ...
- Dockerfile 常用指令 - 每天5分钟玩转 Docker 容器技术(16)
是时候系统学习 Dockerfile 了.下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档. FROM指定 base 镜像. MAINTAINER设置镜像的作者,可以是任 ...