iOS开发之自己封装的提示框(警告框)样式BHAlertView
最近需要使用到提示框(警告框)进行信息的展示和提醒,所以进行了一个类的封装,想用Swift调用此OC文件,但是发现有些困难,所以暂时先把OC代码进行展示,随后再好好研究一下在Swift中的使用。
对于封装文件,首先要设计界面,其次是数据之间的传递过程
初始化样式方法:
- (instancetype)initWithTitle:(NSString *)title icon:(UIImage *)icon message:(NSString *)message delegate:(id<BHAlertViewDelegate>)delegate buttonTitles:(NSString *)buttonTitles, ... {
if (self = [super initWithFrame:[UIScreen mainScreen].bounds]) {
_icon = icon;
_title = title;
_message = message;
_delegate = delegate;
_buttonArray = [NSMutableArray array];
_buttonTitleArray = [NSMutableArray array];
//在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表,下面就是为了实现方法中"..."的效果
va_list args;
va_start(args, buttonTitles);
if (buttonTitles)
{
[_buttonTitleArray addObject:buttonTitles];
while (1)
{
NSString * otherButtonTitle = va_arg(args, NSString *);
if(otherButtonTitle == nil) {
break;
} else {
[_buttonTitleArray addObject:otherButtonTitle];
}
}
}
va_end(args);
self.backgroundColor = [UIColor clearColor];
_backgroundView = [[UIView alloc] initWithFrame:self.frame];
_backgroundView.backgroundColor = [UIColor blackColor];
[self addSubview:_backgroundView];
[self initContentView];
}
return self;
}
获取标题、信息的大小
//----------获取各控件Size大小
- (CGSize)getTitleSize {
UIFont *font = [UIFont systemFontOfSize:TITLE_FONT_SIZE];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy};
CGSize size = [_title boundingRectWithSize:CGSizeMake(contentViewWidth - (MARGIN_LEFT_SMALL + MARGIN_RIGHT_SMALL + _iconImageView.frame.size.width + SPACE_SMALL), 2000) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
size.width = ceil(size.width);
size.height = ceil(size.height);
return size;
}
- (CGSize)getMessageSize {
UIFont *font = [UIFont systemFontOfSize:MESSAGE_FONT_SIZE];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = MESSAGE_LINE_SPACE;
NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy};
CGSize size = [_message boundingRectWithSize:CGSizeMake(contentViewWidth - (MARGIN_LEFT_LARGE + MARGIN_RIGHT_LARGE), 2000) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
size.width = ceil(size.width);
size.height = ceil(size.height);
return size;
}
设置代理方法
//----------按钮点击执行代理方法
- (void)buttonWithPressed:(UIButton *)button {
if (_delegate && [_delegate respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) {
NSInteger index = [_buttonTitleArray indexOfObject:button.titleLabel.text];
[_delegate alertView:self clickedButtonAtIndex:index];
}
[self hide];
}
然后添加一些设置字体大小颜色,显示,隐藏的方法
最后是对封装类的使用
BHAlertView *bhAlertV = [[BHAlertView alloc] initWithTitle:@"设置按钮字体的颜色和大小" icon:[UIImage imageNamed:@"baby_alert_icon"] message:@"设置按钮字体的颜色和大小设置按钮字体的颜色和大小" delegate:self buttonTitles:@"取消",@"修改",@"删除", nil];
//设置标题和内容的字体颜色、大小
[bhAlertV setTitleColor:[UIColor redColor] fontSize:17];
[bhAlertV setMessageColor:[UIColor cyanColor] fontSize:12];
//设置按钮字体的颜色和大小
[bhAlertV setButtonTitleColor:[UIColor orangeColor] fontSize:15 atIndex:0];
[bhAlertV setButtonTitleColor:[UIColor blueColor] fontSize:17 atIndex:1];
[bhAlertV setButtonTitleColor:[UIColor purpleColor] fontSize:19 atIndex:2];
[bhAlertV show];
效果图:
源码下载:http://download.csdn.net/detail/hbblzjy/9658209
如有问题,请留言。。。
iOS开发之自己封装的提示框(警告框)样式BHAlertView的更多相关文章
- iOS开发——UI篇OC篇&TextField作为搜索框的使用
TextField作为搜索框的使用 在iOS开发中我们经常会使用到搜索框,但是有的时候系统自带的搜索框不足以满足我吗想要的功能,这个时候我们就可以使用自定义的搜索框实现想要的功能. 今天就简单的介绍一 ...
- iOS开发拓展篇—封装音频文件播放工具类
iOS开发拓展篇—封装音频文件播放工具类 一.简单说明 1.关于音乐播放的简单说明 (1)音乐播放用到一个叫做AVAudioPlayer的类 (2)AVAudioPlayer常用方法 加载音乐文件 - ...
- iOS:提示框(警告框)控件UIActionSheet的详解
提示框(警告框)控件2:UIActionSheet 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.它与导航栏类似,它继承自UIView. 风格类型: ...
- iOS:提示框(警告框)控件UIAlertView的详解
提示框(警告框)控件:UIAlertView 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能. 类型:typedef NS_ENUM(NSInte ...
- JavaScript 消息框,警告框,确认框,提示框
1.警告框 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法: alert("文本") 2.确认框 确认框用于使用户可以验证或 ...
- BootStrap母版页布局.子页面布局.BootstrapTable.模态框.警告框.html导出tabl生成Excel.HTML生成柱图.饼图.时间控件中文版
如上就是很多后台管理系统的母版页布局. 左边一列模板.上面一列系统标识. 空白处充填子页面 以ASP.NET MVC为基础 引入bootstrap.js.bootstrap.css body: < ...
- iOS开发-网络-合理封装请求接口
概述 如今大多App都会与网络打交道,作为开发者,合理的对网络后台请求接口进行封装十分重要.本文要介绍的就是一种常见的采用回调函数(方法)的网络接口封装,也算的是一种构架吧. 这个构架主要的idea是 ...
- iOS开发之自己封装一个progressHUD控件
看了几个轻量级的progress view 我觉得KVNProgress做的最漂亮吧 突然我想为什么我自己不封装一个控件 然后我研究了一下KVNProgress KVN简单的界面是由storyboar ...
- IOS开发UI篇之──自定义加载等待框(MBProgressHUD)
本文转载至 http://blog.csdn.net/xunyn/article/details/8064984 原文地址http://www.189works.com/article-89289 ...
随机推荐
- 【20170920校内模拟赛】小Z爱学习
所有题目开启-O2优化,开大栈空间,评测机效率为4亿左右. T1 小 Z 学数学(math) Description 要说小 Z 最不擅长的学科,那一定就是数学了.这不,他最近正在学习加法运算.老 ...
- hdu 2243 考研路茫茫——单词情结(AC自动+矩阵)
考研路茫茫——单词情结 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu2795 线段树 贴广告
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Ubuntu 16.04安装JDK/JRE并配置环境变量
作为一个Linux新手,在写这篇文章之前,安装了几次jdk,好多次都是环境变量配置错误,导致无法登录系统.经过几天的研究,今天新装系统,从头来完整配置一遍 系统版本:Ubuntu 16.04 JDK版 ...
- C语言程序设计第二次作业0
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 include int mian() { printf(&q ...
- spring基本原理
作者:王奕然链接:https://www.zhihu.com/question/21346206/answer/101789659来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- application-config.xml和mvc-config.xml的区别
头一个放bean之类的东西 后一个放controllers, view resolvers之类的东西
- java客户端Jedis操作Redis Sentinel 连接池
pom配置: <dependency> <groupId>org.springframework.data</groupId> <artifactId> ...
- 【转】动态规划DP
[数据结构与算法] DP 动态规划 介绍 原创 2017年02月13日 00:42:51 最近在看算法导论. DP全称是dynamic programming,这里programming不是编程,是一 ...
- Linux 查看CPU温度
安装 lm-sensors sudo apt-get install lm-sensors # 安装yes | sudo sensors-detect # 侦测所有感测器 sensors # 查看温度 ...