【原创作品, 欢迎转载,转载请在明显处注明! 谢谢。    

    原文地址:http://blog.csdn.net/toss156/article/details/7552075

      UIAlertView 是一个十分常用的控件,网上也有好多类似的自定义AlertView的方法。但是感觉效果都不是很好,它们有的是在系统自带的上面添加文本框,也有的是完全自己用UIView来实现,还有的就是继承了UIAlertView 。

      今天给大家带来的这个UIAlertView ,它也是继承了UIAlertView,然后屏蔽了系统的背景图片,和 按钮,然后自己添加,事件响应,从而完成了样式的自定义,这样做的好处是保留了 UIAlertView的模态窗口。

最终的效果图:

[cpp] view plaincopy
  1. //
  2. //  JKCustomAlert.m
  3. //  AlertTest
  4. //
  5. //  Created by  on 12-5-9.
  6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. @protocol JKCustomAlertDelegate <NSObject>
  10. @optional
  11. - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
  12. @end
  13. @interface JKCustomAlert : UIAlertView {
  14. id  JKdelegate;
  15. UIImage *backgroundImage;
  16. UIImage *contentImage;
  17. NSMutableArray *_buttonArrays;
  18. }
  19. @property(readwrite, retain) UIImage *backgroundImage;
  20. @property(readwrite, retain) UIImage *contentImage;
  21. @property(nonatomic, assign) id JKdelegate;
  22. - (id)initWithImage:(UIImage *)image contentImage:(UIImage *)content;
  23. -(void) addButtonWithUIButton:(UIButton *) btn;
  24. @end
[cpp] view plaincopy
  1. //
  2. //
  3. //  JKCustomAlert.m
  4. //  AlertTest
  5. //
  6. //  Created by  on 12-5-9.
  7. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
  8. //
  9. #import "JKCustomAlert.h"
  10. @interface JKCustomAlert ()
  11. @property(nonatomic, retain) NSMutableArray *_buttonArrays;
  12. @end
  13. @implementation JKCustomAlert
  14. @synthesize backgroundImage,contentImage,_buttonArrays,JKdelegate;
  15. - (id)initWithImage:(UIImage *)image contentImage:(UIImage *)content{
  16. if (self == [super init]) {
  17. self.backgroundImage = image;
  18. self.contentImage = content;
  19. self._buttonArrays = [NSMutableArray arrayWithCapacity:4];
  20. }
  21. return self;
  22. }
  23. -(void) addButtonWithUIButton:(UIButton *) btn
  24. {
  25. [_buttonArrays addObject:btn];
  26. }
  27. - (void)drawRect:(CGRect)rect {
  28. CGSize imageSize = self.backgroundImage.size;
  29. [self.backgroundImage drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
  30. }
  31. - (void) layoutSubviews {
  32. //屏蔽系统的ImageView 和 UIButton
  33. for (UIView *v in [self subviews]) {
  34. if ([v class] == [UIImageView class]){
  35. [v setHidden:YES];
  36. }
  37. if ([v isKindOfClass:[UIButton class]] ||
  38. [v isKindOfClass:NSClassFromString(@"UIThreePartButton")]) {
  39. [v setHidden:YES];
  40. }
  41. }
  42. for (int i=0;i<[_buttonArrays count]; i++) {
  43. UIButton *btn = [_buttonArrays objectAtIndex:i];
  44. btn.tag = i;
  45. [self addSubview:btn];
  46. [btn addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
  47. }
  48. if (contentImage) {
  49. UIImageView *contentview = [[UIImageView alloc] initWithImage:self.contentImage];
  50. contentview.frame = CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height);
  51. [self addSubview:contentview];
  52. }
  53. }
  54. -(void) buttonClicked:(id)sender
  55. {
  56. UIButton *btn = (UIButton *) sender;
  57. if (JKdelegate) {
  58. if ([JKdelegate respondsToSelector:@selector(alertView:clickedButtonAtIndex:)])
  59. {
  60. [JKdelegate alertView:self clickedButtonAtIndex:btn.tag];
  61. }
  62. }
  63. [self dismissWithClickedButtonIndex:0 animated:YES];
  64. }
  65. - (void) show {
  66. [super show];
  67. CGSize imageSize = self.backgroundImage.size;
  68. self.bounds = CGRectMake(0, 0, imageSize.width, imageSize.height);
  69. }
  70. - (void)dealloc {
  71. [_buttonArrays removeAllObjects];
  72. [backgroundImage release];
  73. if (contentImage) {
  74. [contentImage release];
  75. contentImage = nil;
  76. }
  77. [super dealloc];
  78. }
  79. @end

Demo下载地址:http://download.csdn.net/detail/toss156/4289966

【IOS】自定义UIAlertView样式,实现可替换背景和按钮相关推荐

  1. android 自定义radiobutton 样式,RadioButton自定义点击时的背景颜色

    一.应用场景: 在使用 RadioButton 时,有时我们会需要自定义点击时改变背景颜色的效果. 效果图: RadioButton自定义背景颜色.jpg 二.实现步骤: 1.新建一组 RadioBu ...

  2. Android必知必会-自定义Scrollbar样式

    如果移动端访问不佳,请使用–>GitHub版 背景 设计师给的设计图完全依照 IOS 的标准来的,导致很多细节的控件都得自己重写,最近的设计图中有显示滚动条,Android 默认的滚动条样式(带 ...

  3. Android自定义ScrollBar,Android必知必会-自定义Scrollbar样式

    如果移动端访问不佳,请使用–>GitHub版 背景 设计师给的设计图完全依照 IOS 的标准来的,导致很多细节的控件都得自己重写,最近的设计图中有显示滚动条,Android 默认的滚动条样式(带 ...

  4. 自定义bootstrap样式-9行样式自定义漂亮大气bootstrap导航栏

    有人说前端发展太快,框架太多,各有所需,各有所长.看看这幅图,估计都知道这些框架,但是大部分公司中实际要用到的也就那么几个. 发展再快,框架再多.还是得回到原点,不就是Html+Css+JavaScr ...

  5. qt 背景和控件布局_QT 设计师使用样式表添加背景

    QT create中样式表可以用来设置背景图.背景颜色.字体大小格式颜色等 1.添加背景图的话需要先添加资源文件 右击项目文件选择添加新文件,再选择QT资源文件(QT resource file)然后 ...

  6. 一劳永逸,iOS 自定义 ActionSheet 封装流程

    原文链接:http://www.jianshu.com/p/cfb87a7db7b1 本文为 iOS 自定义视图封装<一劳永逸>系列的第四期,旨在提供封装思路,结果固然重要,但理解过程才最 ...

  7. iOS自定义View 控件自动计算size能力

    iOS自定义View 控件自动计算size能力 背景 在使用 UILabel 和 UIImage 的时候,不用指定宽高约束,控件也不会报约束缺失,还可以根据内容自己确定适合的宽高,特别适合 Xib 和 ...

  8. [转]C# winForm 自定义鼠标样式的两种方法

    本文转自:http://www.cnblogs.com/hzbzxm/archive/2008/09/15/1291104.html 以前试过在WinForm中自定义鼠标样式,结果显示出来的鼠标变成单 ...

  9. 用css自定义滚动条样式

    如果你是一个搞网页前端的,有必要了解一下自定义滚动条样式这个东东.目前支持自定义滚动条样式的有IE浏览器.webkit内核浏览器(chrome). IE下的滚动条样式 1.样式规则 scrollbar ...

最新文章

  1. 教你如何编写第一个爬虫
  2. 【 Vivado 】基本的时序约束、分析的概念
  3. 决策树之 C4.5 算法
  4. 在MATLAB function中可变的变量数据类型
  5. 数据库临时表空间设置
  6. logisim无法打开解决办法
  7. html主要的骨架结构
  8. 4 数据操作+数据预处理
  9. 业务需求、用户需求和功能需求
  10. marlab中主成分得分怎么求_线性回归中多重共线性处理——主成分分析法
  11. PHP帮管客CRM系统源码去域名授权v2.4.4版
  12. 使用Aforge 开发的摄像头,有拍照,录像,设置帧率,分辨率等,以及对视频以及相机等的控制
  13. python声音模拟_5秒钟让python克隆别人的声音
  14. 【VUE】微商城(十一)----购物车下订单,选择收货地址,商品详情页立即购买,取消订单,查看订单详情
  15. 运维工程师必会原理知识
  16. 慎用P值:它让研究结果不可靠
  17. x64dbg安装xAnalyzer插件失败问题解决
  18. 教您正确选择一款合适您的家用路由器
  19. IECIE电子烟展——深圳第六届电子烟博览会
  20. ectouch购物车添加勾选结算功能

热门文章

  1. python建立字典读取键和值_在Python字典中动态创建键和值
  2. 【小白学习tensorflow教程】二、TensorBoard可视化模型训练
  3. 浦发银行招聘计算机类笔试题,2019浦发银行招聘计算机模拟试题及答案
  4. 岗位内推 | 美团语音交互部招聘NLP/知识图谱/语音识别等算法职位(可实习)...
  5. 活动 | INTERFACE#4 解读搜狗机器翻译技术,体验搜狗旅行翻译宝产品
  6. Thymeleaf 语法快速入门
  7. Pycharm-列出代码结构
  8. php粉丝关注功能,Redis实现用户关注功能
  9. 【Jenkins持续集成】docker部署+配置+操作Jenkins
  10. 手把手带你撸一把springsecurity框架源码中的认证流程