Fork me on GitHub

IOS开发UI篇之──自定义UIActionSheet

UIActionSheet类系IOS开发中实现警告框的重要的类,而在好多应用中,都对它进行了扩展,今天介绍一下自定义风格的UIActionSheet

 

一、自定义CustomActionSheet类

  CustomActionSheet类继承UIActionSheet,具体的实现如下所示:

  1)CustomActionSheet.h头文件

 

#import <Foundation/Foundation.h>

 

@interface CustomActionSheet : UIActionSheet {

UIToolbar* toolBar;

UIView* view;

}

@property(nonatomic,retain)UIView* view;

@property(nonatomic,retain)UIToolbar* toolBar;

 

/*因为是通过给ActionSheet  Button来改变ActionSheet, 所以大小要与actionsheetbutton数有关

 *height = 84, 134, 184, 234, 284, 334, 384, 434, 484

 *如果要用self.view = anotherview.  那么another的大小也必须与view的大小一样

 */

-(id)initWithHeight:(float)height WithSheetTitle:(NSString*)title;

@end

   

   2)CustomActionSheet.m实现文件

 

 

#import "CustomActionSheet.h"

 

@implementation CustomActionSheet

@synthesize view;

@synthesize toolBar;

-(id)initWithHeight:(float)height WithSheetTitle:(NSString*)title

{

self = [super init];

    if (self) 

{

int theight = height - 40;

int btnnum = theight/50;

for(int i=0; i<btnnum; i++)

{

[self addButtonWithTitle:@" "];

}

toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];

toolBar.barStyle = UIBarStyleBlackOpaque;

 

UIBarButtonItem *titleButton = [[UIBarButtonItem alloc] initWithTitle:title 

                                                                        style:UIBarButtonItemStylePlain 

                                                                       target:nil 

                                                                       action:nil];

        

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 

                                                                        style:UIBarButtonItemStyleDone 

                                                                       target:self

                                                                       action:@selector(done)];

        

UIBarButtonItem *leftButton  = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" 

                                                                        style:UIBarButtonItemStyleBordered 

                                                                       target:self 

                                                                       action:@selector(docancel)];

        

UIBarButtonItem *fixedButton  = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 

                                                                                      target:nil 

                                                                                      action:nil];

        

NSArray *array = [[NSArray alloc] initWithObjects:leftButton,fixedButton,titleButton,fixedButton,rightButton,nil];

[toolBar setItems: array];

[titleButton release];

[leftButton  release];

[rightButton release];

[fixedButton release];

[array       release];

 

[self addSubview:toolBar];

view = [[UIView alloc] initWithFrame:CGRectMake(0, 44, 320, height-44)];

view.backgroundColor = [UIColor groupTableViewBackgroundColor];

[self addSubview:view];

    }

    return self;

}

-(void)done

{

[self dismissWithClickedButtonIndex:0 animated:YES];

}

-(void)docancel

{

[self dismissWithClickedButtonIndex:0 animated:YES];

}

-(void)dealloc

{

[view release];

[super dealloc];

}

@end

 


二、利用自定义的CustomActionSheet类显示提示框

 

 

 

#import "TestActionSheetViewController.h"

#import "CustomActionSheet.h"

@implementation TestActionSheetViewController

 

-(IBAction)btndown

{

CustomActionSheet* sheet = [[CustomActionSheet alloc] initWithHeight:284.0f 

                                                          WithSheetTitle:@"自定义ActionSheet"];

UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0,50, 320, 50)];

label.text = @"这里是要自定义放的控制";

label.backgroundColor = [UIColor clearColor];

label.textAlignment = UITextAlignmentCenter;

[sheet.view addSubview:label];

[sheet showInView:self.view];

[sheet release];

}

@end

 

    这里的UILabel是作一个示例,在这个位置你可以换成你自己的内容即可;

 

三、效果图

posted on 2012-02-08 20:40  pengyingh  阅读(16042)  评论(3编辑  收藏  举报

导航