ios 简单基础控件创建汇总:UIBUTTON UILabel UITextField UILabel UIscroll

来源:互联网 发布:java 正则表达式 筛选 编辑:程序博客网 时间:2024/05/21 14:09

转载自:http://www.cnblogs.com/maxfong/articles/2216180.html http://www.cnblogs.com/wengzilin/archive/2012/03/13/2393985.html http://www.2cto.com/kf/201111/112631.html http://blog.csdn.net/amdbenq/article/details/7866166



UIBUTTON

 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];//初始化button,选择button类型btn.frame = CGRectMake(30, 360, 90, 35);//大小和位置[btn setTitle:@"ZoomIn" forState:UIControlStateNormal];//正常状况下button显示的标题[btn setTitle:@"ZoomIn" forState:UIControlStateHighlighted];//高亮显示时button的标题[btn addTarget:self action:@selector(zoomInAction:) forControlEvents:UIControlEventTouchUpInside];//button被按下又抬起后发生的事件//@selector可以理解为"选择子",selector是一个指针变量,类似于sender。 这里是将method的方法指定给新建的这个btn。/*在 method 方法里可以将 sender 看作是 btn 了 比如设置btn的hidden属性等等 btn.hidden = YES; 这样btn被隐藏了/*// 通过背景图片设置按钮高亮IImage *normalImage = [UIImage imageNamed:@"NormalBlueButton.png"];     UIImage *highlightedImage = [UIImage imageNamed:@"HighlightedBlueButton"];    self.myButton = [UIButton buttonWithType:UIButtonTypeCustom];    self.myButton.frame = CGRectMake(110.0f,200.0f,100.0f, 37.0f);    [self.myButton  setBackgroundImage:normalImage forState:UIControlStateNormal];    [self.myButton setBackgroundImage:highlightedImage  forState:UIControlStateHighlighted];    [self.myButton setTitle:@"Normal" forState:UIControlStateNormal];    [self.myButton setTitle:@"Pressed" forState:UIControlStateHighlighted];//这里创建一个圆角矩形的按钮02     UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];03      04 //    能够定义的button类型有以下6种,05 //    typedef enum {06 //        UIButtonTypeCustom = 0,          自定义风格07 //        UIButtonTypeRoundedRect,         圆角矩形08 //        UIButtonTypeDetailDisclosure,    蓝色小箭头按钮,主要做详细说明用09 //        UIButtonTypeInfoLight,           亮色感叹号10 //        UIButtonTypeInfoDark,            暗色感叹号11 //        UIButtonTypeContactAdd,          十字加号按钮12 //    } UIButtonType;13      14     //给定button在view上的位置15     button1.frame = CGRectMake(20, 20, 280, 20);16      17     //button背景色18     button1.backgroundColor = [UIColor clearColor];19      20     //设置button填充图片21     //[button1 setImage:[UIImage imageNamed:@"btng.png"] forState:UIControlStateNormal];22      23     //设置button标题24     [button1 setTitle:@"点击" forState:UIControlStateNormal];25      26     /* forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现*/27     //以下是几种状态28 //    enum {29 //        UIControlStateNormal       = 0,         常规状态显现             30 //        UIControlStateHighlighted  = 1 << 0,    高亮状态显现   31 //        UIControlStateDisabled     = 1 << 1,    禁用的状态才会显现32 //        UIControlStateSelected     = 1 << 2,    选中状态             33 //        UIControlStateApplication  = 0x00FF0000, 当应用程序标志时           34 //        UIControlStateReserved     = 0xFF000000  为内部框架预留,可以不管他            35 //    };36      37     /*38      * 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为no,39      * 那么可以去掉这个功能40     */41     button1.adjustsImageWhenHighlighted = NO;42     /*跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置*/43     button1.adjustsImageWhenDisabled = NO;44     /* 下面的这个属性设置为yes的状态下,按钮按下会发光*/45     button1.showsTouchWhenHighlighted = YES;46      47     /* 给button添加事件,事件有很多种,我会单独开一篇博文介绍它们,下面这个时间的意思是48      按下按钮,并且手指离开屏幕的时候触发这个事件,跟web中的click事件一样。49      触发了这个事件以后,执行butClick:这个方法,addTarget:self 的意思是说,这个方法在本类中50      也可以传入其他类的指针*/51     [button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];52      53      54     //显示控件55     [self.view addSubview:button1];


UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 20.0, 200.0, 50.0)];           //设置显示文字         label1.text = @"label1";            //设置字体:粗体,正常的是 SystemFontOfSize         label1.font = [UIFont boldSystemFontOfSize:20];         //设置文字颜色      label1.textColor = [UIColor orangeColor];            //设置文字位置         label1.textAlignment = UITextAlignmentRight// UITextAlignmentCenter//UITextAlignmentLeft;               //设置字体大小适应label宽度         label1.adjustsFontSizeToFitWidth = YES;          //设置label的行数         label1.numberOfLines = 2;        label1.backgroudColor=[UIColor clearColor]; //可以去掉背景色        //设置高亮         label1.highlighted = YES;         label1.highlightedTextColor = [UIColor orangeColor];         //设置阴影         label1.shadowColor = [UIColor redColor];         label1.shadowOffset = CGSizeMake(1.0,1.0);         //设置是否能与用户进行交互         label1.userInteractionEnabled = YES;         //设置label中的文字是否可变,默认值是YES         label1.enabled = NO;         //设置文字过长时的显示格式         label1.lineBreakMode = UILineBreakModeMiddleTruncation;//截去中间     //  typedef enum {     //      UILineBreakModeWordWrap = 0,     //      UILineBreakModeCharacterWrap,     //      UILineBreakModeClip,//截去多余部分     //      UILineBreakModeHeadTruncation,//截去头部     //      UILineBreakModeTailTruncation,//截去尾部     //      UILineBreakModeMiddleTruncation,//截去中间     //  } UILineBreakMode;         //如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为         label1.baselineAdjustment = UIBaselineAdjustmentNone;     //  typedef enum {     //      UIBaselineAdjustmentAlignBaselines,     //      UIBaselineAdjustmentAlignCenters,     //      UIBaselineAdjustmentNone,     //  } UIBaselineAdjustment;     <pre name="code" class="objc">[label1 sizetofit];///label1文本自适应顶置


[self.view addSubview:label1]; [label1 release];


     

UITextField的初始化和设置  textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];   [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型    textField.placeholder = @"password"; //默认显示的字    textField.secureTextEntry = YES; //密码    textField.autocorrectionType = UITextAutocorrectionTypeNo;   textField.autocapitalizationType = UITextAutocapitalizationTypeNone;   textField.returnKeyType = UIReturnKeyDone;   textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X    textField.delegate = self;2.要实现的Delegate方法,关闭键盘  - (BOOL)textFieldShouldReturn:(UITextField *)textField   {       [self.textField resignFirstResponder];       return YES;   } 3. 可以在UITextField使用下面方法,按return键返回-(IBAction) textFieldDone:(id) sender{ [textFieldName resignFirstResponder]; }链接TextField控件的"Did end on exit"最右侧加图片是以下代码,    UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];    text.rightView=imgv;    text.rightViewMode = UITextFieldViewModeAlways;    如果是在最左侧加图片就换成:text.leftView=imgv;text.leftViewMode = UITextFieldViewModeAlways;    UITextField 继承自 UIControl,此类中有一个属性contentVerticalAlignment所以想让UITextField里面的text垂直居中可以这样写:text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;查看函数的方法:按住command键双击进入函数声明按住alt键双击进入doc文档///////////////////////////////////////////////////////////////文本框常用方法:如何用程序删除文本框中选中的文本[textView delete: nil];///////////////////////////////////////////////////////////////如何限制文本框只能输入数字:建立NSNumberFormatter的子类,增加这个方法,将formatter链接至文本框。 - (BOOL) isPartialStringValid: (NSString **) partialStringPtr        proposedSelectedRange: (NSRangePointer) proposedSelRangePtr               originalString: (NSString *) origString        originalSelectedRange: (NSRange) origSelRange             errorDescription: (NSString **) error{    NSCharacterSet *nonDigits;    NSRange newStuff;    NSString *newStuffString;                nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];    newStuff = NSMakeRange(origSelRange.location,                           proposedSelRangePtr->location                           - origSelRange.location);    newStuffString = [*partialStringPtr substringWithRange: newStuff];                if ([newStuffString rangeOfCharacterFromSet: nonDigits                                                                                             options: NSLiteralSearch].location != NSNotFound) {        *error = @"不是数字";        return (NO);    } else {        *error = nil;        return (YES);    }            }///////////////////////////////////////////////////////////////从文本框获取十六进制数据的代码char singleNumberString[3] = {'\0','\0','\0'};uint32_t singleNumber = 0;uint32_t i = 0; NSMutableData *data = [NSMutableData data]; //从文本框获取到得数据 const char *buf = [[_hexToSendTextField text] UTF8String]; //转换为十六进制 for(i = 0; i < strlen(buf); i+=2) { if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1]))) { singleNumberString[0] = buf; singleNumberString[1] = buf[i+1]; sscanf(singleNumberString, "%x", &singleNumber); [data appendBytes:(void*)(&tmp) length:1]; } else { break; } } //输出 NSLog(@"%@", data);/////////////////////////////////////////////////////////////点击 UITextView 输入文字,光标都从最初点开始- (void)textViewDidChangeSelection:(UITextView *)textView{    NSRange range;    range.location = 0;    range.length = 0;    textView.selectedRange = range;}///////////////////////////////////////////////////////////软键盘在登录页面要实现用户名和密码,密码要是点点格式,引入当前页面光标要停留在用户名选项,软键盘要弹出界面。如下图:弹出键盘:[username becomeFirstResponder];取消键盘:[username resignFirstResponder];密码保护:password.secureTextEntry=YES;//////////////////////////////////////////////////////////////////1.UITextField的初始化和设置  textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];   [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型   textField.placeholder = @"password"; //默认显示的字   textField.secureTextEntry = YES; //密码   textField.autocorrectionType = UITextAutocorrectionTypeNo;   textField.autocapitalizationType = UITextAutocapitalizationTypeNone;   textField.returnKeyType = UIReturnKeyDone;   textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X   textField.delegate = self;2.要实现的Delegate方法,关闭键盘  - (BOOL)textFieldShouldReturn:(UITextField *)textField   {       [self.textField resignFirstResponder];       return YES;   } 3. 可以在UITextField使用下面方法,按return键返回-(IBAction) textFieldDone:(id) sender{ [textFieldName resignFirstResponder]; }链接TextField控件的"Did end on exit"////////////////////////////////////////////////////////////////////限制输入文本的长度- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    if (range.location >= MAX_LENGTH)        return NO; // return NO to not change text    return YES;}if (textField.text.length >= 10 && range.length == 0)    return NO;return YES;- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {  if ([textField.text length] > MAXLENGTH)  {   textField.text = [textField.text substringToIndex:MAXLENGTH-1];   return NO;  }  return YES; } //////////////////////////////////////////////////////////////////////使用UITextFieldDelegate来隐藏键盘 在iPhone界面上,时常会需要当用户输入完内容后,隐藏键盘。 当然有很多方法,今天只介绍使用UITextFieldDelegate这个协议实现隐藏键盘。其实很简单, 需要三步:1. 在你的控制器类中,加入UITextFieldDelegate这个协议如:@interface AddItemViewController : UIViewController <UITextFieldDelegate>2. 在使用了UITextFieldDelegate协议的控制器类的实现中,加入- (BOOL)textFieldShouldReturn:方法。- (BOOL)textFieldShouldReturn:(UITextField *)textField {         [textField resignFirstResponder];        return YES;} //设置焦点:[UITextField becomeFirstResponder];3. 将xib文件中的TextField控件的delegate变量指向到之前使用UITextFieldDelegate协议的那个控制器类,将 TextField的delegate IBOutlet变量右键链接到前面的控制器类的实例上。或者使用代码方式,指定相关TextField的delegate变量。- (void)viewDidLoad {    [super viewDidLoad];        itemNameField.delegate = self;        priceField.delegate = self;}复制代码

UISCroll

 (1)初始化一般的组件初始化都可以alloc和init来初始化,上一段代码初始化。view plainUIScrollView *sv  =[[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0,self.view.frame.size.width, 400)];   一般的初始化也都有很多方法,都可以确定组件的Frame,或者一些属性,比如UIButton的初始化可以确定Button的类型。当然,我比较提倡大家用代码来写,这样比较了解整个代码执行的流程,而不是利用IB来弄布局,确实很多人都用IB来布局会省很多时间,但这个因人而异,我比较提倡纯代码写。 (2)滚动属性UIScrollView的最大属性就是可以滚动,那种效果很好看,其实滚动的效果主要的原理是修改他的坐标,准确的讲是修改原点坐标,而UIScrollView跟其他组件的都一样,有自己的delegate,在.h文件中要继承UIScrollView的delegate然后在.m文件的viewDidLoad设置的delegate为self。如下: view plainsv.pagingEnabled = YES; sv.backgroundColor = [UIColor blueColor]; sv.showsVerticalScrollIndicator = NO; sv.showsHorizontalScrollIndicator = NO; sv.delegate = self;  CGSize newSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height); [sv setContentSize:newSize];  [self.view addSubview: sv];    在上面的代码中,一定要设置UIScrollView的pagingEnable为YES。不然你就是设置好了其他属性,它还是无法拖动,接下去的分别是设置背景颜色和是否显示水平和竖直拖动条,最后最重要的设置他的ContentSize,ContentSize的意思就是它所有内容的大小,这个和它的Frame是不一样的,只有ContentSize的大小大于Frame这样才可以支持拖动。 (3)结合UIPageControl做新闻翻页效果初始化UIPageControl的方法都很简单,就是上面讲的alloc和init,不过大家要记住的一点就是如果你定义了全局变量一定要在delloc那里释放掉。 UIPageControl有一个userInteractionEnabled你可以设置它为NO。就是点击的时候它不调用任何方法。然后设置它的currentPage 为0,并把它加到view上去。 接下来在UIScrollView的delegate方法:view plain- (void)scrollViewDidScroll:(UIScrollView *)scrollView;     在这里你可以写上关于UIPageControl的页面设置的算法。如下 view plainint index = fabs(scrollView.contentOffset.x) /scrollView.frame.size.width;  pageControl.currentPage = index;   (4)其他的UIScrollView还支持处理缩放的动作,比如图片的缩小或者地图。但是必须实现它的委托viewForZoomingInScrollView:scrollViewDidEndZooming:withView:atScale:然后它的两个属性maximumZoomScale和minimumZoomScale 要不一样。这样就能基本实现图片的缩放了。 好了,今天讲UIScrollView和UIPageControl就到这里咯,希望大家都能理解。欢迎拍砖。附加一个photo的利用UIScrollView实现的demo给大家: http://up.2cto.com/2011/1130/20111130025112243.zip 作者Andy---清风




0 0
原创粉丝点击