【IOS】自定义UIAlertView样式,实现可替换背景和按钮
来源:互联网 发布:淘宝网首页女装冬装 编辑:程序博客网 时间:2024/04/28 02:42
原文链接: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样式,实现可替换背景和按钮
- 【IOS】自定义UIAlertView样式,实现可替换背景和按钮
- 【IOS】自定义UIAlertView样式,实现可替换背景和按钮
- 【IOS】自定义UIAlertView样式,实现可替换背景和按钮
- IOS自定义UIAlertView样式,实现可替换背景和按钮
- IOS自定义UIAlertView样式,实现可替换背景和按钮
- 【IOS】自定义UIAlertView样式,实现可替换背景和按钮
- 自定义UIAlertView样式,实现可替换背景和按钮
- 自定义UIAlertView样式,实现可替换背景和按钮
- 自定义UIAlertView样式,实现可替换背景和按钮
- 自定义UIAlertView样式,实现可替换背景和按钮
- [ios] 自定义UIAlertView样式,实现可替换背景和按钮 【转】
- 自定义UIAlertView样式,实现可替换背景和按钮 IOS7无效
- IOS】自定义UIAlertView样式,实现可替换背景和按钮 此博文包含图片此博文包含视频(2012-10-24 10:23:25)
- 自定义ios UIAlertView, 重排按钮位置
- 自定义 UIAlertVIew 背景
- 自定义UIAlertView背景
- iOS 背景图片。按钮高亮自定义背景
- @JoinColumn
- 利用CSS、JavaScript及Ajax实现图片预加载的三大方法
- 汇编调试技巧:调用C语言函数printf()
- 浅谈钩子技术(转)
- 没有面包哪来的爱情
- 【IOS】自定义UIAlertView样式,实现可替换背景和按钮
- 总谐波失真THD+N百分制和DB制单位转换
- 计算机名词解释——1
- 限制textarea 文本框的长度(收集了几个办法)
- apache+php+memcached+mysql 访问加速方案
- TCP报文首部格式
- 再见Cookie,微软Google苹果计划携手开发替代品
- 学习android内核 -- 程序包管理(PackageManagerService)
- “三马”打造国内首家互联网险企