生活随笔
收集整理的這篇文章主要介紹了
【IOS】自定义UIAlertView样式,实现可替换背景和按钮
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【原創作品, 歡迎轉載,轉載請在明顯處注明! 謝謝。????
??? 原文地址:http://blog.csdn.net/toss156/article/details/7552075】
???
???? ?UIAlertView 是一個十分常用的控件,網上也有好多類似的自定義AlertView的方法。但是感覺效果都不是很好,它們有的是在系統自帶的上面添加文本框,也有的是完全自己用UIView來實現,還有的就是繼承了UIAlertView 。
????? 今天給大家帶來的這個UIAlertView ,它也是繼承了UIAlertView,然后屏蔽了系統的背景圖片,和 按鈕,然后自己添加,事件響應,從而完成了樣式的自定義,這樣做的好處是保留了 UIAlertView的模態窗口。
?
最終的效果圖:
?
?
[cpp]?view plaincopy
?? ?? ?? ?? ?? ?? ?? ?? #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??
?
[cpp]?view plaincopy
?? ?? ?? ?? ?? ?? ?? ?? ?? #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?{?? ?????? ????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样式,实现可替换背景和按钮的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。