- 浏览: 183938 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
wenm168:
这里有iText 5.5导出pdf, 比较常用的功能及表格画斜 ...
JAVA利用iText导出PDF -
dcj3sjt126com:
您好,我情况和您一样,然后我按照这个方式做了之后,没有效果,还 ...
UITableView与UIPageViewController的UIPanGestureRecognizer手势冲突解决办法 -
mao_siyu:
这个jar 包 和 这代码里面的类 不一致了,楼主 能改一下吗 ...
JAVA利用iText导出PDF -
wenjie4892543:
写的好。。。
利用jqueryzoom实现图片放大镜效果 -
wenjie4892543:
写的好。。。
oracle实操
我们先实现单个按钮,为了复用,不管单选还是复选按钮都是使用同一个类来实现,为了区别单选还是复选,我们用一个自定义枚举类型CheckButtonStyle属性style来区别,当其值设置为CheckButtonStyleDefault或CheckButtonStyleBox时,为复选按钮:
当其值设为CheckButtonStyleRadio时,为单选按钮:
当按钮在选中/反选状态间切换时,文字左边的图片自动转换。
整个控件是由一个ImageView、一个Label、一个BOOL变量及其他变量组成,.h文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
typedef enum { CheckButtonStyleDefault = 0 , CheckButtonStyleBox = 1 , CheckButtonStyleRadio = 2 } CheckButtonStyle; #import <Foundation/Foundation.h> @interface CheckButton : UIControl { //UIControl* control; UILabel * label ; UIImageView * icon ; BOOL checked ; id value , delegate ; CheckButtonStyle style ; NSString * checkname ,* uncheckname ; // 勾选/反选时的图片文件名 } @property ( retain , nonatomic ) id value,delegate; @property ( retain , nonatomic )UILabel* label; @property ( retain , nonatomic )UIImageView* icon; @property ( assign )CheckButtonStyle style; -( CheckButtonStyle )style; -( void )setStyle:( CheckButtonStyle )st; -( BOOL )isChecked; -( void )setChecked:( BOOL )b; @end |
具体实现如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
#import "CheckButton.h" @implementation CheckButton @synthesize label,icon,value,delegate; -( id )initWithFrame:( CGRect ) frame { if ( self =[ super initWithFrame : frame ]) { icon =[[ UIImageView alloc ] initWithFrame : CGRectMake ( 10 , 0 , frame . size . height , frame . size . height )]; [ self setStyle : CheckButtonStyleDefault ]; // 默认风格为方框(多选)样式 //self.backgroundColor=[UIColor grayColor]; [ self addSubview : icon ]; label =[[ UILabel alloc ] initWithFrame : CGRectMake ( icon . frame . size . width + 24 , 0 , frame . size . width - icon . frame . size . width - 24 , frame . size . height )]; label . backgroundColor =[ UIColor clearColor ]; label . font =[ UIFont fontWithName : @"Arial" size : 20 ]; label . textColor =[ UIColor colorWithRed : 0xf9 / 255.0 green : 0xd8 / 255.0 blue : 0x67 / 255.0 alpha : 1 ]; label . textAlignment = UITextAlignmentLeft ; [ self addSubview : label ]; [ self addTarget : self action : @selector ( clicked ) forControlEvents : UIControlEventTouchUpInside ]; } return self ; } -( CheckButtonStyle )style{ return style ; } -( void )setStyle:( CheckButtonStyle )st{ style =st; switch ( style ) { case CheckButtonStyleDefault : case CheckButtonStyleBox : checkname = @"checked.png" ; uncheckname = @"unchecked.png" ; break ; case CheckButtonStyleRadio : checkname = @"radio.png" ; uncheckname = @"unradio.png" ; break ; default : break ; } [ self setChecked : checked ]; } -( BOOL )isChecked{ return checked ; } -( void )setChecked:( BOOL )b{ if (b!= checked ){ checked =b; } if ( checked ) { [ icon setImage :[ UIImage imageNamed : checkname ]]; } else { [ icon setImage :[ UIImage imageNamed : uncheckname ]]; } } -( void )clicked{ [ self setChecked :! checked ]; if ( delegate != nil ) { SEL sel= NSSelectorFromString ( @"checkButtonClicked" ); if ([ delegate respondsToSelector :sel]){ [ delegate performSelector :sel]; } } } -( void )dealloc{ value = nil ; delegate = nil ; [ label release ]; [ icon release ]; [ super dealloc ]; } @end |
使用CheckButton类很简单,构造、设置标签文本等属性,然后addSubview:
1 2 3 4 5 |
CheckButton * cb=[[ CheckButton a lloc ] initWithFrame : CGRectMake ( 20 , 60 , 260 , 32 )]; cb. label . text = @"checkbutton1" ; cb. value =[[ NSNumber alloc ] initWithInt : 18 ]; cb. style = CheckButtonStyleDefault ; [ self . view addSubview :cb]; |
二、单选按钮组的实现
复选按钮无所谓“组”的概念,单选按钮则不同。在同一个组中,单选按钮只允许同时选择一个按钮,不能选多个,因此我们要实现一个单选按钮组的类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#import <Foundation/Foundation.h> #import "CheckButton.h" @interface RadioGroup : NSObject { NSMutableArray * children ; NSString * text ; id value ; } @property ( readonly )NSString* text; @property ( readonly ) id value; -( void )add:( CheckButton *)cb; -( void )checkButtonClicked:( id )sender; @end #import "RadioGroup.h" @implementation RadioGroup @synthesize text,value; -( id )init{ if ( self =[ super init ]){ children =[[ NSMutableArray alloc ] init ]; } return self ; } -( void )add:( CheckButton *)cb{ cb. delegate = self ; if (cb. checked ) { text =cb. label . text ; value =cb. value ; } [ children addObject :cb]; } -( void )checkButtonClicked:( id )sender{ CheckButton * cb=( CheckButton *)sender; if (!cb. checked ) { // 实现单选 for ( CheckButton * each in children ){ if (each. checked ) { [each setChecked : NO ]; } } [cb setChecked : YES ]; // 复制选择的项 text =cb. label . text ; value =cb. value ; } NSLog ( @"text:%@,value:%d" , text ,[( NSNumber *) value intValue ]); } -( void )dealloc{ [ text release ]; value = nil ; [ children release ]; [ super dealloc ]; } @end |
单选按钮组在ViewController中的使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
-( id )initWithNibName:( NSString *)nibNameOrNil bundle:( NSBundle *)nibBundleOrNil{ if ( self =[ super initWithNibName :nibNameOrNil bundle :nibBundleOrNil]){ // 单选按钮组 rg =[[ RadioGroup alloc ] init ]; // 第 1 个单选按钮 CheckButton * cb=[[ CheckButton alloc ] initWithFrame : CGRectMake ( 20 , 60 , 260 , 32 )]; // 把单选按钮加入按钮组 [ rg add :cb]; cb. label . text = @"★" ; cb. value =[[ NSNumber alloc ] initWithInt : 1 ]; // 把按钮设置为单选按钮样式 cb. style = CheckButtonStyleRadio ; // 加入视图 [ self . view addSubview :cb]; [cb release ]; //add 后,会自动持有,可以释放 // 第 2 个单选按钮 cb=[[ CheckButton alloc ] initWithFrame : CGRectMake ( 20 , 100 , 260 , 32 )]; [ rg add :cb]; cb. label . text = @"★★" ; cb. value =[[ NSNumber alloc ] initWithInt : 2 ]; cb. style = CheckButtonStyleRadio ; [ self . view addSubview :cb]; [cb release ]; // 第 3 个单选按钮 cb=[[ CheckButton alloc ] initWithFrame : CGRectMake ( 20 , 140 , 260 , 32 )]; // 各种属性必须在 [rg addv] 之前设置,否则 text 和 value 不会被 populate cb. checked = YES ; cb. label . text = @"★★★" ; cb. value =[[ NSNumber alloc ] initWithInt : 3 ]; cb. style = CheckButtonStyleRadio ; [ self . view addSubview :cb]; [ rg add :cb]; // 属性设置完之后再 add [cb release ]; // 第 4 个单选按钮 cb=[[ CheckButton alloc ] initWithFrame : CGRectMake ( 20 , 180 , 260 , 32 )]; [ rg add :cb]; cb. label . text = @"★★★★" ; cb. value =[[ NSNumber alloc ] initWithInt : 4 ]; cb. style = CheckButtonStyleRadio ; [ self . view addSubview :cb]; [cb release ]; // 第 5 个单选按钮 cb=[[ CheckButton alloc ] initWithFrame : CGRectMake ( 20 , 220 , 260 , 32 )]; [ rg add :cb]; cb. label . text = @"★★★★★" ; cb. value =[[ NSNumber alloc ] initWithInt : 5 ]; cb. style = CheckButtonStyleRadio ; [ self . view addSubview :cb]; [cb release ]; } return self ; } |
运行效果:
原文作者:颐和园
原文链接:http://blog.csdn.net/kmyhy/archive/2011/01/18/6149996.aspx
发表评论
-
CocoaPods本地库管理使用笔记
2016-09-05 16:34 1273设置预编译头文件方式1:s.prefix_heade ... -
AFNetWorking and SDUrlCache 缓存http请求
2014-11-03 14:25 1718SDURLCache *urlCache = [ ... -
设计一个移动应用的本地缓存机制
2014-07-28 11:30 0在手机应用程序开发中,为了减少与服务端的交互次数,加快用户 ... -
IOS开发问题集
2014-07-28 10:42 1049IOS学习问题集 1.UIWebVie ... -
UIWebView问题
2014-07-28 10:00 11361.UIWebView内嵌在UITableView里,web ... -
加载bundle资源方法
2014-06-27 09:37 485[UIImage imageNamed:@" ... -
IOS检测版本更新
2014-06-27 08:42 680如果我们要检测app版本的更新,那么我们必须获取当前运行a ... -
iOS开发中混合使用ARC和非ARC项目
2014-03-06 15:19 778在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用 ... -
关于IOS7应用兼容IOS6
2014-03-06 09:57 911大家都知道现在IOS7已经没有独立的状态栏啦,IOS7默认新 ... -
Objective-C代码注释和文档输出的工具和方法
2014-02-17 11:27 1598代码注释可以让代码更容易接受和使用,特别是在大型项目合作开发 ... -
Tiled地图编辑操作技巧
2013-11-06 15:01 1059Tiled有四种方式可以编辑瓷砖地图,菜单 ... -
UITableView与UIPageViewController的UIPanGestureRecognizer手势冲突解决办法
2013-08-16 10:19 13192最近在项目中使用了UIPageViewController来 ... -
IOS代码调试技巧
2013-07-26 10:07 749#define NSA ... -
IOS项目SVN设置
2013-06-17 15:35 1189在团队开发中,经常我们会使用SVN来管理源代码,本人使用Sm ... -
使用Objective-C的文档生成工具:Appledoc
2013-04-25 11:41 2210在项目中经常需要文档 ... -
跳转到app评论页面
2013-04-23 15:56 1147在APP里经常会引导用户给自己的应用评分,实现代码如下: ... -
objc_getAssociatedObject, objc_setAssociatedObject
2012-12-06 11:04 10504category与associative作为object ... -
Popover View
2012-10-10 09:37 928http://blog.getsherpa.com/blog/ ... -
pinyin中文首字母排序
2012-10-10 09:16 1345因项目需要对通讯录中的联系人进行排序,需要对中文字符进行 ... -
设置IOS应用引导动画
2012-09-24 13:54 1475iOS设备现在有三种不 ...
相关推荐
本教程重点讲解的是如何在MFC中实现控件的自绘,特别是针对按钮、复选框、单选框、菜单栏、静态文本等常见控件的自定义绘制。 1. **控件自绘基础** 自绘是指程序员通过重写控件的OnDraw()方法,亲自控制控件的绘制...
首先,我们需要理解复选框(Checkbox)和单选框(Radio Button)的基本工作原理。复选框允许用户选择多个选项,而单选框则确保在同一组内只能有一个选项被选中。在大多数编程语言中,如C++,它们通常作为控件类存在...
总之,实现Delphi ListView的复选框单选功能需要自定义事件处理,以确保每次点击或操作后只有一个项被选中。提供的源码和实例将帮助开发者更好地理解和应用这一功能,从而提高应用程序的用户交互性。
2. **设计界面**:在设计器中,我们可以从工具箱拖放其他控件,如单选按钮(RadioButton)和复选框(CheckBox),并布局它们以形成所需的设计。 3. **代码实现**:在UserControl的代码-behind文件中,我们可以编写处理...
本主题将深入探讨如何利用UserControl来实现对标准Windows Forms控件,如单选按钮(RadioButton)和复选框(CheckBox)的美化。UserControl是Windows Forms提供的一种复合控件,它允许开发人员将多个基本控件组合...
在前端开发中,复选框(Checkbox)和单选按钮(Radio Button)是常见的用户界面元素,用于收集用户的多选或单选数据。本压缩包“复选框和单选按钮动画效果.zip”可能包含了一些关于如何为这些元素添加动态视觉效果的...
在Windows编程中,原生的复选框(Checkbox)和单选按钮(Radio Button)通常是由Windows API或者特定的库如ATL/WTL提供的控件。这些控件默认的外观和行为是系统定义的,包括它们的背景颜色,通常与对话框或窗口的...
本资源“C#自定义控件(usercontrol)--美化单选按钮和复选按钮__0525.rar”显然是一个关于如何在C#中创建自定义UserControl来美化标准的单选按钮(RadioButton)和复选按钮(CheckBox)的教程或代码示例。...
本压缩包"jQuery实现自定义黑色单选框和复选框代码.zip"包含了一份使用jQuery来定制样式,特别是创建黑色主题的单选框(radio)和复选框(checkbox)的示例代码。 首先,我们需要理解jQuery的基本用法。jQuery通过$...
本视频教程将深入讲解如何在VC++中创建和操作复选框控件,包括: 1. 创建复选框控件:演示如何在资源编辑器中添加复选框并设置其属性。 2. 编写事件处理代码:解释如何编写响应BN_CLICKED事件的代码,以及如何读取和...
总之,通过自定义复选和单选按钮,开发者不仅可以定制界面样式,还能实现特定的交互逻辑,从而提供更加符合应用需求的用户体验。在实现过程中,会涉及iOS UI设计原则、视图绘制、事件响应、动画效果以及代码封装和...
总的来说,单选框和复选框是C#编程中不可或缺的UI元素,它们能有效地帮助用户进行选择,同时也方便开发者获取用户的输入。熟练掌握这两者的使用,将对提升软件的用户体验和功能完整性起到关键作用。在实际项目中,...
在Qt编程中,单选框(QRadioButton)和复选框(QCheckBox)是两种常见的用户界面元素,用于实现用户的选择交互。它们是Qt Widgets模块的一部分,广泛应用于各种图形用户界面应用中。本教程将深入讲解Qt中的单选框与...
2. **按钮**:执行特定操作的交互控件,如普通按钮、复选框、单选按钮,以及各种形状的触发按钮,它们能启动函数或者改变程序流程。 3. **编辑框**:允许用户输入数据或文本的控件,如数值输入框、字符串输入框,...
总之,iPhone上的单选框和复选框实现主要依赖自定义UI组件,结合`UIButton`或`UISwitch`,并通过调整图片和大小来满足设计需求。在"CheckBoxDemo"项目中,你可能会看到这些概念的具体实现,包括手势处理、状态管理...
要为CListBox添加复选框,我们需要自定义控件,这涉及到重绘和处理消息映射。 1. **重绘复选框**:可以通过覆盖CListBox的`OnDrawItem`成员函数来绘制复选框。在该函数中,你需要使用`CDC`类的绘图方法(如`...
本资源"CSS3实现的多种复选框和单选按钮美化效果源码.zip"正是利用了CSS3的特性来改进传统的HTML复选框(checkbox)和单选按钮(radio button)的显示效果,使得这些交互元素不仅具有功能性,而且更具视觉吸引力。...
例如,可以隐藏原有的复选框或单选按钮,然后用自定义的图形元素(如`<div>`或`<span>`)来替换它们的视觉表示。当用户选择某个选项时,通过`:checked`伪类改变自定义元素的样式,从而实现美化效果。 此外,CSS3还...
"Jquery复选框美化"和"单选按钮美化"正是关注这个领域的技术实践。jQuery,一个强大的JavaScript库,为开发者提供了丰富的API和插件,使得这些基础的HTML元素能够变得更加吸引人和功能强大。 首先,复选框和单选...
以上步骤基本涵盖了纯CSS实现自定义多选框和单选框颜色的方法。在实际项目中,你可能还需要考虑更多的细节,比如响应式设计、触屏设备的交互以及更复杂的图形设计。通过不断的实践和优化,可以创建出既美观又实用的...