转载自:http://www.cnblogs.com/pengyingh/articles/2343200.html

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, 所以大小要与actionsheet的button数有关

*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是作一个示例,在这个位置你可以换成你自己的内容即可;

三、效果图

 
 

IOS开发UI篇之──自定义UIActionSheet的更多相关文章

  1. iOS开发UI篇—Quartz2D(自定义UIImageView控件)

    iOS开发UI篇—Quartz2D(自定义UIImageView控件) 一.实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义 ...

  2. IOS开发UI篇之──自定义加载等待框(MBProgressHUD)

    本文转载至 http://blog.csdn.net/xunyn/article/details/8064984   原文地址http://www.189works.com/article-89289 ...

  3. iOS开发UI篇—CAlayer(自定义layer)

    iOS开发UI篇—CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的Draw ...

  4. ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

    本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布 ...

  5. iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局

    iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目文件结构和plist文件 二.实现效果 三.代码示例 1.没有使用配套的类,而是直接使用xib文 ...

  6. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  7. iOS开发UI篇—简单的浏览器查看程序

    iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...

  8. iOS开发UI篇—从代码的逐步优化看MVC

    iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他 ...

  9. iOS开发UI篇—UITableview控件基本使用

    iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> ...

随机推荐

  1. 【win8技巧】win8一键截图自动保存到文件夹

    以前截图都是按着键盘的PrtSc键,但是这个只是保存到剪贴板,还需要粘贴才行. 现在win8可以直接使用 Win + PrtSc 进行全屏截图,不仅保存到剪贴板,而且自动保存到[库]--[图片]--[ ...

  2. C++引用的实质

    转自探索c++的底层机制 在看这篇文章之前,请你先要明白一点:那就是c++为我们所提供的各种存取控制仅仅是在编译阶段给我们的限制,也就是说是编译器确保了你在完成任务之前的正确行为,如果你的行为不正确, ...

  3. "Money, Money, Money"

    acdream1408:http://115.28.76.232/problem?pid=1408 题意:给你一个x,让你构造a,b,是的na+bm可以组成大于x的所有的数.a>1,b>1 ...

  4. [wikioi]二叉树最大宽度和高度

    简单的DFS,用数组w记录每一层的宽度就行了,就是遇到一层就++.中间发现在C++里面,如果int未初始化就是用也是有异常的.还有二叉树的数组表示时,从1开始计数会比较好.还有后来学会了数组这样的初始 ...

  5. java路径中的空格问题(转)

    java路径中的空格问题 1. URLTest.class.getResource("/").getPath(); URLTest.class.getResource(" ...

  6. 在C++中子类继承和调用父类的构造函数方法

    构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法).因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需 ...

  7. socket编程在windows和linux下的区别

    如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...

  8. Formatting is Specified but argument is not IFormattable

    private void DeviceSetText(TextBox textBox, string text) { //处理text的显示值 ") //小数位后保留2位 { //小数点后保 ...

  9. Go语言程序的状态监控 via 达达

    Go语言程序的状态监控 Go是很实在的编程语言,从一开始就提供了很详细的运行状态信息.产品上线后的调优和排查疑难杂症都得靠这些状态信息.这边总结一些我们项目里用到的状态监控手段. pprof Go自带 ...

  10. C# 如何获取某个类型或类型实例对象的大小

    在统计类型或类型实例对象时,出了个异常: “不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量.” 后来查了一下,原来,我们创建的struct或是class都是属于复杂类型的.(纠正一下,如 ...