【IOS】自定义UIAlertView样式,实现可替换背景和按钮
【原创作品, 欢迎转载,转载请在明显处注明! 谢谢。
原文地址:http://blog.csdn.net/toss156/article/details/7552075】
UIAlertView 是一个十分常用的控件,网上也有好多类似的自定义AlertView的方法。但是感觉效果都不是很好,它们有的是在系统自带的上面添加文本框,也有的是完全自己用UIView来实现,还有的就是继承了UIAlertView 。
今天给大家带来的这个UIAlertView ,它也是继承了UIAlertView,然后屏蔽了系统的背景图片,和 按钮,然后自己添加,事件响应,从而完成了样式的自定义,这样做的好处是保留了 UIAlertView的模态窗口。
最终的效果图:
- //
- // JKCustomAlert.m
- // AlertTest
- //
- // Created by on 12-5-9.
- // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- @protocol JKCustomAlertDelegate <NSObject>
- @optional
- - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
- @end
- @interface JKCustomAlert : UIAlertView {
- id JKdelegate;
- UIImage *backgroundImage;
- UIImage *contentImage;
- NSMutableArray *_buttonArrays;
- }
- @property(readwrite, retain) UIImage *backgroundImage;
- @property(readwrite, retain) UIImage *contentImage;
- @property(nonatomic, assign) id JKdelegate;
- - (id)initWithImage:(UIImage *)image contentImage:(UIImage *)content;
- -(void) addButtonWithUIButton:(UIButton *) btn;
- @end
- //
- //
- // JKCustomAlert.m
- // AlertTest
- //
- // Created by on 12-5-9.
- // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
- //
- #import "JKCustomAlert.h"
- @interface JKCustomAlert ()
- @property(nonatomic, retain) NSMutableArray *_buttonArrays;
- @end
- @implementation JKCustomAlert
- @synthesize backgroundImage,contentImage,_buttonArrays,JKdelegate;
- - (id)initWithImage:(UIImage *)image contentImage:(UIImage *)content{
- if (self == [super init]) {
- self.backgroundImage = image;
- self.contentImage = content;
- self._buttonArrays = [NSMutableArray arrayWithCapacity:4];
- }
- return self;
- }
- -(void) addButtonWithUIButton:(UIButton *) btn
- {
- [_buttonArrays addObject:btn];
- }
- - (void)drawRect:(CGRect)rect {
- CGSize imageSize = self.backgroundImage.size;
- [self.backgroundImage drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
- }
- - (void) layoutSubviews {
- //屏蔽系统的ImageView 和 UIButton
- for (UIView *v in [self subviews]) {
- if ([v class] == [UIImageView class]){
- [v setHidden:YES];
- }
- if ([v isKindOfClass:[UIButton class]] ||
- [v isKindOfClass:NSClassFromString(@"UIThreePartButton")]) {
- [v setHidden:YES];
- }
- }
- for (int i=0;i<[_buttonArrays count]; i++) {
- UIButton *btn = [_buttonArrays objectAtIndex:i];
- btn.tag = i;
- [self addSubview:btn];
- [btn addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
- }
- if (contentImage) {
- UIImageView *contentview = [[UIImageView alloc] initWithImage:self.contentImage];
- contentview.frame = CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height);
- [self addSubview:contentview];
- }
- }
- -(void) buttonClicked:(id)sender
- {
- UIButton *btn = (UIButton *) sender;
- if (JKdelegate) {
- if ([JKdelegate respondsToSelector:@selector(alertView:clickedButtonAtIndex:)])
- {
- [JKdelegate alertView:self clickedButtonAtIndex:btn.tag];
- }
- }
- [self dismissWithClickedButtonIndex:0 animated:YES];
- }
- - (void) show {
- [super show];
- CGSize imageSize = self.backgroundImage.size;
- self.bounds = CGRectMake(0, 0, imageSize.width, imageSize.height);
- }
- - (void)dealloc {
- [_buttonArrays removeAllObjects];
- [backgroundImage release];
- if (contentImage) {
- [contentImage release];
- contentImage = nil;
- }
- [super dealloc];
- }
- @end
Demo下载地址:http://download.csdn.net/detail/toss156/4289966
【IOS】自定义UIAlertView样式,实现可替换背景和按钮相关推荐
- android 自定义radiobutton 样式,RadioButton自定义点击时的背景颜色
一.应用场景: 在使用 RadioButton 时,有时我们会需要自定义点击时改变背景颜色的效果. 效果图: RadioButton自定义背景颜色.jpg 二.实现步骤: 1.新建一组 RadioBu ...
- Android必知必会-自定义Scrollbar样式
如果移动端访问不佳,请使用–>GitHub版 背景 设计师给的设计图完全依照 IOS 的标准来的,导致很多细节的控件都得自己重写,最近的设计图中有显示滚动条,Android 默认的滚动条样式(带 ...
- Android自定义ScrollBar,Android必知必会-自定义Scrollbar样式
如果移动端访问不佳,请使用–>GitHub版 背景 设计师给的设计图完全依照 IOS 的标准来的,导致很多细节的控件都得自己重写,最近的设计图中有显示滚动条,Android 默认的滚动条样式(带 ...
- 自定义bootstrap样式-9行样式自定义漂亮大气bootstrap导航栏
有人说前端发展太快,框架太多,各有所需,各有所长.看看这幅图,估计都知道这些框架,但是大部分公司中实际要用到的也就那么几个. 发展再快,框架再多.还是得回到原点,不就是Html+Css+JavaScr ...
- qt 背景和控件布局_QT 设计师使用样式表添加背景
QT create中样式表可以用来设置背景图.背景颜色.字体大小格式颜色等 1.添加背景图的话需要先添加资源文件 右击项目文件选择添加新文件,再选择QT资源文件(QT resource file)然后 ...
- 一劳永逸,iOS 自定义 ActionSheet 封装流程
原文链接:http://www.jianshu.com/p/cfb87a7db7b1 本文为 iOS 自定义视图封装<一劳永逸>系列的第四期,旨在提供封装思路,结果固然重要,但理解过程才最 ...
- iOS自定义View 控件自动计算size能力
iOS自定义View 控件自动计算size能力 背景 在使用 UILabel 和 UIImage 的时候,不用指定宽高约束,控件也不会报约束缺失,还可以根据内容自己确定适合的宽高,特别适合 Xib 和 ...
- [转]C# winForm 自定义鼠标样式的两种方法
本文转自:http://www.cnblogs.com/hzbzxm/archive/2008/09/15/1291104.html 以前试过在WinForm中自定义鼠标样式,结果显示出来的鼠标变成单 ...
- 用css自定义滚动条样式
如果你是一个搞网页前端的,有必要了解一下自定义滚动条样式这个东东.目前支持自定义滚动条样式的有IE浏览器.webkit内核浏览器(chrome). IE下的滚动条样式 1.样式规则 scrollbar ...
最新文章
- 教你如何编写第一个爬虫
- 【 Vivado 】基本的时序约束、分析的概念
- 决策树之 C4.5 算法
- 在MATLAB function中可变的变量数据类型
- 数据库临时表空间设置
- logisim无法打开解决办法
- html主要的骨架结构
- 4 数据操作+数据预处理
- 业务需求、用户需求和功能需求
- marlab中主成分得分怎么求_线性回归中多重共线性处理——主成分分析法
- PHP帮管客CRM系统源码去域名授权v2.4.4版
- 使用Aforge 开发的摄像头,有拍照,录像,设置帧率,分辨率等,以及对视频以及相机等的控制
- python声音模拟_5秒钟让python克隆别人的声音
- 【VUE】微商城(十一)----购物车下订单,选择收货地址,商品详情页立即购买,取消订单,查看订单详情
- 运维工程师必会原理知识
- 慎用P值:它让研究结果不可靠
- x64dbg安装xAnalyzer插件失败问题解决
- 教您正确选择一款合适您的家用路由器
- IECIE电子烟展——深圳第六届电子烟博览会
- ectouch购物车添加勾选结算功能
热门文章
- python建立字典读取键和值_在Python字典中动态创建键和值
- 【小白学习tensorflow教程】二、TensorBoard可视化模型训练
- 浦发银行招聘计算机类笔试题,2019浦发银行招聘计算机模拟试题及答案
- 岗位内推 | 美团语音交互部招聘NLP/知识图谱/语音识别等算法职位(可实习)...
- 活动 | INTERFACE#4 解读搜狗机器翻译技术,体验搜狗旅行翻译宝产品
- Thymeleaf 语法快速入门
- Pycharm-列出代码结构
- php粉丝关注功能,Redis实现用户关注功能
- 【Jenkins持续集成】docker部署+配置+操作Jenkins
- 手把手带你撸一把springsecurity框架源码中的认证流程