转载自: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. 解决Linux/aix 下的websphere log4j不生效

    websphere 解决Linux/aix下的log4j不生效 在目录: /IBM/WebSphere/AppServer/profiles/AppSrv01/properties 增加一个文件:可以 ...

  2. Ubutn14.04下caffeine工具不显示在工具栏中的问题

    安装过程请参考Ubuntu 14.04下安装Caffeine 2.6.2 阻止显示器进入睡眠状态 至于为什么不显示在任务栏,这不是程序的bug,你可以平ps -e看一下,任务已经在运行. 其实这是新版 ...

  3. MVC3中的路由系统(Routes)

    转载:http://blog.csdn.net/francislaw/article/details/7429317 MVC中,用户访问的地址并不映射到服务器中对应的文件,而是映射到对应Control ...

  4. [codility]Prefix-set

    这题很简单,一开始用了set.但后来一想这样其实是n*logn的,而且没有利用所有的数都在0..N-1之间.那么可以直接用vector当hashset. // you can also use inc ...

  5. Java中堆和栈创建对象的区别

    http://blog.csdn.net/hbhhww/article/details/8152838

  6. SpringBoot入门 一 构建简单工程

    环境准备:jdk1.7(推荐)以上,tomcat8(推荐)以上,或者使用插件自带.mevan插件3.2以上,eclipse编辑工具 pom文件基本配置如下 <project xmlns=&quo ...

  7. URI Scheme

    1. 什么是URI Scheme? 一般情况下,遇到这种概念不清的问题,最好的第一手资料就是wiki,实在看不懂,再看百度百科,但前者给出的资料一般都是更加准确一些. 以下为维基百科和百度百科关于这个 ...

  8. nginx-rrd监控nginx访问数

    一 .查看已安装的nginx是否包含stub_status模块 /usr/local/nginx/sbin/nginx -V nginx version: Nginx/1.2.0 configure ...

  9. 【转】IOS 怎么获取外设的广播数据AdvData

    原文网址:http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/73443.aspx N ...

  10. 【转】Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在And ...