ios:用代码向视图中添加各种控件

来源:互联网 发布:现代房屋设计视频软件 编辑:程序博客网 时间:2024/05/18 01:13


1、UIControl类是UIView的子类,位于控件类树的根部,使用目标动作发送消息。

   控件种类:显示类控件、控制类控件、其它控件。

   (1)向视图中添加背景图

       - (void)addImageView

 

  {

   UIImageView*pTemImageView=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"456.png"]];

   [self.viewinsertSubview:pTemImageViewatIndex:0];

 }

 (2)向视图中添加标签

  - (void)addLabel

 

{

 

   //创建一个标签,并设置位置

 

   CGRectfram=CGRectMake(200,100,100,50);

 

   UILabel*mylabel=[[UILabelalloc]initWithFrame:fram];

 

   //设置标签背景颜色为透明色

 

   mylabel.backgroundColor=[UIColorclearColor];

 

   //设置标签内容和字体颜色

 

   mylabel.text=@"hello world!\nhello,everyone";

 

   mylabel.textColor=[UIColorredColor];

 

   //显示行数

 

   mylabel.numberOfLines=2;

 

   //阴影颜色

 

   mylabel.shadowColor=[UIColorblackColor];

 

   //阴影尺寸

 

   mylabel.shadowOffset=CGSizeMake(2.0,1.0);

 

   [self.viewaddSubview:mylabel];

 

   [mylabelrelease];

 

 }

 (3)向视图中添加按钮


    - (void)addButton

 

{

 

   //创建并初始化一个按钮

 

  UIButton*myButton=[UIButtonbuttonWithType:UIButtonTypeRoundedRect];

 

   //设置按钮区域

 

   [myButtonsetFrame:CGRectMake(10,10,50,20)];

 

   //允许高亮显示      

 

   [myButtonsetTitle:@"Normal"forState:UIControlStateNormal];

 

   

 

   [myButtonsetTitle:@"HighLight"forState:UIControlStateHighlighted];

 

   

 

   myButton.showsTouchWhenHighlighted=YES;
     {

 

   NSLog(@"Buttonpushed down!");

 

} 

 

   //按下按钮时实现的方法

 

   [myButtonaddTarget:selfaction:@selector(buttonDown:)forControlEvents:UIControlEventTouchDown];

 

   //放开按钮时实现的方法

 

   [myButtonaddTarget:selfaction:@selector(buttonRelease:)forControlEvents:UIControlEventTouchUpInside];

 

   //创建带有图片的按钮

 

  [myButtonsetImage:[UIImageimageNamed:@"123.png"]forState:UIControlStateNormal];

 

   //把按钮添加到视图

 

   [self.viewaddSubview:myButton];

 

   //释放对象

 

   [myButtonrelease];

 

}

 

//添加动作处理方法

 

- (void)buttonDown:(id)sender


{

 

   NSLog(@"button release");

 

}

 - (void)buttonRelease:(id)sender

 

{

 

   NSLog(@"button release");

 

}

(4)向视图添加开关 


- (void)addSwitch

 

{

 

   //创建并初始化一个开关

 

   CGRectswitchRect=CGRectMake(200,10,10,10);

 

  UISwitch *mySwitch=[[UISwitchalloc]initWithFrame:switchRect];

 

   //给开关添加目标和动作

 

   [mySwitchaddTarget:selfaction:@selector(switchAction:)forControlEvents:UIControlEventValueChanged];

 

   //切换开关

 

   [mySwitchsetOn:YESanimated:YES];

 

   [self.viewaddSubview:mySwitch];

 

   [mySwitchrelease];

 

   }

 


//添加动作处理方法



- (void)switchAction:(id)sender

 

{

 

   //找到开关

 

   UISwitch*pSwitch=(UISwitch *)sender;

 

   if(pSwitch.isOn)//根据开关的状态设置背景图hidden

 

   {

 

       [self.pImageViewsetHidden:NO];

 

   }

 

   else

 

   {

 

       [self.pImageViewsetHidden:YES];

 

   }

 

}

 (5)添加滑动条  UISlider


- (void)addSlider

 

{

 

   //创建滑动条

 

   UISlider*mySlider=[[UISlideralloc]initWithFrame:CGRectMake(10,150,200,20)];

 

   //设置最小值

 

   mySlider.minimumTrackTintColor=0;

 

   //设置最大值

 

   mySlider.maximumValue=100;

 

   //是否可以持续滑动

 

   mySlider.continuous=YES;

 

   //设置初始值

 

   mySlider.value=50;

 

   //设置透明度

 

   mySlider.alpha=mySlider.value/100;

 //最小值处理的图片

 

   mySlider.minimumValueImage=[UIImageimageNamed:@"apple_min"];

 

   //最大值处理的照片

 

   mySlider.maximumValueImage=[UIImageimageNamed:@"apple_max"];

 

   //设置当前的图片

 

   [mySlidersetThumbImage:[UIImageimageNamed:@"apple_thumb.png"]forState:UIControlStateNormal];

 

   //添加对应动作,注意:CotrolEventsvalueChanged

 

   [mySlideraddTarget:selfaction:@selector(sliderAction:)forControlEvents:UIControlEventValueChanged];

 

   //添加滑动条到视图

 

   [self.viewaddSubview:mySlider];

 

   //创建显示当前值的label

 

   self.pShowValueLabel=[[UILabelalloc]initWithFrame:CGRectMake(10,100,84,26)];

 

   //设置背景色

 

   self.pShowValueLabel.backgroundColor= [UIColorlightGrayColor];

 

   //设置当前文本内容

 

   self.pShowValueLabel.text= [NSStringstringWithFormat:@"亮度:%%%d",(int)mySlider.value];

 

   //将标签添加到视图

 

   [self.viewaddSubview:self.pShowValueLabel];

 

   //释放对象   

 

   [mySliderrelease];

 

}

 

- (void)sliderAction:(UISlider*)slider

 {

 

   self.pShowValueLabel.text=[NSStringstringWithFormat:@"亮度:%%%d",(int)slider.value];

 

   self.pImageView.alpha=slider.value/100;

 

 

}

 (6)添加文本框  UITextField


- (void)addTextField

 

{

 

   //创建TextField

 

   UITextField*myTextField=[[UITextFieldalloc]initWithFrame:CGRectMake(10,200,200,31)];

 

   //设置边框样式

 

   myTextField.borderStyle=UITextBorderStyleRoundedRect;

 

   //设置字体

 

   myTextField.font=[UIFontsystemFontOfSize:18.0];

 

   //根据宽度改变字体

 

   myTextField.adjustsFontSizeToFitWidth=YES;

 

   //最小字体

 

   myTextField.minimumFontSize=2.0;

 

   //清除按钮的样式

 

   myTextField.clearButtonMode=UITextFieldViewModeWhileEditing;

 

   //弹出的键盘的样式

 

   myTextField.keyboardType=UIKeyboardTypeDefault;

 

   //设置使用自动更正功能

 


   myTextField.autocorrectionType=UITextAutocorrectionTypeNo;


 

   //设置键盘自动大小写的属性

 

   myTextField.autocapitalizationType=UITextAutocapitalizationTypeNone;

 

   //设置返回按钮类型

 

    myTextField.returnKeyType=UIReturnKeyDone;

 

   //设置是否支持密码文本显示

 

    myTextField.secureTextEntry=YES;

 

   //设置委托

 

    myTextField.delegate=self;

 

   [self.viewaddSubview:myTextField];

 

  [myTextFieldrelease];

 

}

(7)添加分段控件   UISegmentedControl

- (void)addSegmentControl

 

{

 

   //创建数组

 

   NSArray*pArr = [NSArrayarrayWithObjects:@"1",@"2",nil];

 

   //根据数组对象初始化SegmentControl对象

 

   UISegmentedControl*pSegment = [[UISegmentedControlalloc]initWithItems:pArr];

 

   [pSegmentsetFrame:CGRectMake(10,240,300,40)];

 

   //设置该分段控件的Style

 

   [pSegmentsetSegmentedControlStyle:UISegmentedControlStyleBordered];




 //设置分段控件选择的段数

 

   [pSegmentsetSelectedSegmentIndex:0];

 

   //添加关联动作

 

   [pSegmentaddTarget:selfaction:@selector(segmentMethod:)forControlEvents:UIControlEventValueChanged];

 

   [self.viewaddSubview:pSegment];

 

 }

 

- (void)segmentMethod:(UISegmentedControl*)segment

 

{

 NSString*pMessage = [NSStringstringWithFormat:@"你选择了第%d,该段宽度已调整",segment.selectedSegmentIndex];

 

   for (int i =0; i< [segmentnumberOfSegments]; i++)

 

   {  //根据你选择的分段的Index进行响应的操作

 

       if(i == [segmentselectedSegmentIndex])

 

       {

 

           [segmentsetWidth:180forSegmentAtIndex:i];

 

       }

 

       else

 

       {

 

           [segmentsetWidth:120forSegmentAtIndex:i];

 

       }

 

   }

 

   //设置警告框

 

   UIAlertView*pAlert = [[UIAlertViewalloc]initWithTitle:@"通知"message:pMessagedelegate:nilcancelButtonTitle:@"确认"otherButtonTitles:nil];

 

   [pAlertshow];

  [pAlertrelease];

}

 (8)添加确认框



- (void)addCheckBoxButton

 

{

 

   //创建一个按钮并设置位置

 

   UIButton*pCheckBoxButton=[UIButtonbuttonWithType:UIButtonTypeCustom];

 

   [pCheckBoxButtonsetFrame:CGRectMake(200,150,100,80)];

 

   //为两种不同状态设置对应图片

 

   [pCheckBoxButtonsetImage:[UIImageimageNamed:@"checkbox_off.png"]forState:UIControlStateNormal];

 

   [pCheckBoxButtonsetImage:[UIImageimageNamed:@"checkbox_on.png"]forState:UIControlStateSelected];

 

   //添加关联动作

 

   [pCheckBoxButtonaddTarget:selfaction:@selector(checkBoxClick:)forControlEvents:UIControlEventTouchUpInside];

 

   //添加按钮到视图中

 

   [self.viewaddSubview:pCheckBoxButton];

 

   //释放对象

 

   [pCheckBoxButtonrelease];

 

}

 


//按钮关联的动作

 

- (void)checkBoxClick:(UIButton*)sender

 

{

 

   sender.selected=!sender.selected;

 

}

 (9)添加表示正在加载的图标

- (void)addActivityIndicatorView

 

{

 

 //创建初始化ActivityIndicatorView(Style)

 

 self.pActivity = [[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

 

 [self.pActivitysetFrame:CGRectMake(10,280,45,45)];

 

 //设置是否隐藏

 

 self.pActivity.hidden=NO;

 

 [self.viewaddSubview:self.pActivity];

 

 //创建按钮,关联对应方法

 

 UIButton*pBtn = [UIButtonbuttonWithType:UIButtonTypeRoundedRect];

 

 [pBtnsetFrame:CGRectMake(10,330,45,30 )];

 

 [pBtnsetTitle:@""forState:UIControlStateNormal];

 

 [pBtnaddTarget:selfaction:@selector(doRotate:)forControlEvents:UIControlEventTouchUpInside];

 

 pBtn.tag =110;

 

 [self.viewaddSubview:pBtn];

 

 }

 

- (void)doRotate:(id)sender

 

{

 


 UIButton *pBtn = (UIButton *)sender;

 

   [self.pActivityisAnimating]?[self.pActivitystopAnimating]:[self.pActivitystartAnimating];

 

   //根据Activity是否运行来设置按钮的title

 

   [pBtnsetTitle:(self.pActivity.isAnimating?@"":@"")forState:UIControlStateNormal];

 

   self.pActivity.hidden=NO;

 

}

(10)创建进度条 UIProgressView


- (void)addProgress

 

{

 

   //创建进度条并初始化

 

   self.pProgress = [[UIProgressView alloc]initWithFrame:CGRectMake(10,360,300,30)];

 

   //设置Style

 

   self.pProgress.progressViewStyle=UIProgressViewStyleBar;

 

   //分别设置进度条完成未完成的颜色

 

   self.pProgress.trackTintColor= [UIColorredColor];

 

  self.pProgress.progressTintColor= [UIColorgreenColor];

 

  [self.viewaddSubview:self.pProgress];

 

   //创建用来显示进度的label

 

   self.pProgressValueLabel = [[UILabelalloc]initWithFrame:CGRectMake(100,370,110,30)];

 

   self.pProgressValueLabel.backgroundColor= [UIColorclearColor];

 

  self.pProgressValueLabel.text=[NSString


 }

  stringWithFormat:@"加载%%%.1f",self.progressValue*100];

 

  [self.viewaddSubview:self.pProgressValueLabel];

 

   //通过计时器完成循环调用

 

   _pTimer= [NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(progressMethod:)userInfo:nilrepeats:YES];

 

}

 

 

- (void)progressMethod:(id)sender

 

{

 

   self.progressValue +=0.1;

 

   self.pProgress.progress=self.progressValue;

 

   self.pProgressValueLabel.text= [NSStringstringWithFormat:@"加载:%%%.1f",self.progressValue*100];

  

   if (self.progressValue>=1)

 

   {

 

       self.progressValue =0;

 

       self.pProgressValueLabel.text=@"加载完成";

 

       //[self.pActivitystopAnimating];

 

       //self.pActivity.hidden= NO;

 

       //停止计时器

 

       [_pTimerinvalidate];

 

   }

 }

添加文本框时,要遵守UITextFieldDelegate协议

#pragma mark-----UITextFieldDelegate------

 //弹回键盘方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField

{

   //放当前的textField放弃第一响应者

   [textFieldresignFirstResponder];

   returnYES;

}

//限制输入字符串长度

- (BOOL)textField:(UITextField *)textFieldshouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString *)string

{

   intMAX_LENGTH =10;

   NSMutableString*pNewString = [NSMutableStringstringWithString:textField.text];

   //完成range内字符串的替换

   [pNewStringreplaceCharactersInRange:rangewithString:string];

   //根据两个的长度判断,返回YES or NO.

   return([pNewStringlength] <= MAX_LENGTH);

}