您的位置:首页 > 产品设计 > UI/UE

iOS开发-Day27UISwitch&UISlider&UIStepper&UISegmentedControl

2015-08-20 15:37 736 查看
1、UISwitch

1.UISwitch的初始化

UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectMake(54.0f, 16.0f, 100.0f, 28.0f)];

2.设置UISwitch的初始化状态

switchView.on = YES;//设置初始为ON的一边

3.UISwitch事件的响应

[switchView addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];


2、UISlider

UISlider *slider = [[UISlider alloc]initWithFrame:CGRectMake(0, 0, 200, 20)]; //初始化
slider.minimumValue = 0;//指定可变最小值
slider.maximumValue = 100;//指定可变最大值
slider.value = 50;//指定初始值
[slider addTarget:self action:@selector(updateValue:) forControlEvents:UIControlEventValueChanged];//设置响应事件
[self.view addSubview:slider];

-(IBAction)updateValue:(id)sender{
  //添加响应事件
  float f = slider.value; //读取滑块的值
}

//改变样式(图片)
slider.backgroundColor = [UIColorclearColor];
[slider setMinimumTrackImage:[UIImageimageNamed:@"max.png"] forState:UIControlStateNormal];
[slider setMaximumTrackImage:[UIImageimageNamed:@"min.png"] forState:UIControlStateNormal];


3、UIStepper

UIStepper *stepper = [[UIStepper alloc] init];//初始化
stepper.tag = 10;//设置唯一标识
stepper.center = CGPointMake(160, 240);//
stepper.minimumValue = 1; //设置最小值
stepper.maximumValue = 30; //设置最大值
stepper.stepValue = 2; //每次递增2
stepper.value = 15; //初始值
[stepper setWraps:YES]; //是否循环
[stepper addTarget:self action:@selector(doTest) forControlEvents:UIControlEventValueChanged]
[self.view addSubview:stepper];


4、UISegmentedControl

//1.初始化UISegmentedControl
SArray *segmentedArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",nil];
UISegmentedControl *segmentedTemp = [[UISegmentedControl alloc]initWithItems:segmentedArray];
self.segmentedControl = segmentedTemp;
segmentedControl.frame = CGRectMake(10.0, 10.0, 300.0, 29.0);

//2.常用属性及设置方法如下:
//设置指定索引的题目
[segmentedControl setTitle:@"1" forSegmentAtIndex:1];
//设置指定索引的图片
[segmentedControl setImage:[UIImage imageNamed:@"home.png"] forSegmentAtIndex:2];
//在指定索引插入一个选项并设置图片
[segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"more.png"] atIndex:2 animated:NO];
//在指定索引插入一个选项并设置题目
[segmentedControl insertSegmentWithTitle:@"new" atIndex:3 animated:NO];
//移除指定索引的选项
[segmentedControl removeSegmentAtIndex:0 animated:NO];
//设置指定索引选项的宽度
[segmentedControl setWidth:60.0 forSegmentAtIndex:2];
//设置选项中图片等的左上角的位置
//[segmentedControl setContentOffset:CGSizeMake(10.0,10.0) forSegmentAtIndex:1];

//设置默认选择项索引
segmentedControl.selectedSegmentIndex = 2;
//分段控件的颜色,只有样式为UISegmentedControlStyleBar的时候才有效果
segmentedControl.tintColor = [UIColor redColor];
//设置样式
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBordered;
//设置在点击后是否恢复原样
segmentedControl.momentary = NO;
//设置指定索引选项不可选
[segmentedControl setEnabled:NO forSegmentAtIndex:3];
//判断指定索引选项是否可选
BOOL enableFlag = [segmentedControl isEnabledForSegmentAtIndex:3];
NSLog(@"%d",enableFlag);

3.分段控件点击事件:
segmentedControl addTarget:self
action:@selector(segmentAction:)
forControlEvents:UIControlEventValueChanged];

4.响应的事件:
-(void)segmentAction:(UISegmentedControl *)Seg
{
NSInteger index = Seg.selectedSegmentIndex;
switch (index) {
case 0:
NSLog(@"0 clicked.");
break;
case 1:
NSLog(@"1 clicked.");
break;
case 2:
NSLog(@"2 clicked.");
break;
case 3:
NSLog(@"3 clicked.");
break;
case 4:
NSLog(@"4 clicked.");
break;
default:
break;
}
}

//获取指定索引选项的图片imageForSegmentAtIndex:
UIImageView *imageForSegmentAtIndex = [[UIImageView alloc]initWithImage:[segmentedControl imageForSegmentAtIndex:1]];
imageForSegmentAtIndex.frame = CGRectMake(60.0, 100.0, 30.0, 30.0);

//获取指定索引选项的标题titleForSegmentAtIndex
UILabel *titleForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(100.0, 100.0, 30.0, 30.0)];
titleForSegmentAtIndex.text = [segmentedControl titleForSegmentAtIndex:0];

//获取总选项数segmentedControl.numberOfSegments
UILabel *numberOfSegments = [[UILabel alloc]initWithFrame:CGRectMake(140.0, 100.0, 30.0, 30.0)];
numberOfSegments.text = [NSString stringWithFormat:@"%d",segmentedControl.numberOfSegments];

//获取指定索引选项的宽度widthForSegmentAtIndex:
UILabel *widthForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(180.0, 100.0, 70.0, 30.0)];
widthForSegmentAtIndex.text = [NSString stringWithFormat:@"%f",[segmentedControl widthForSegmentAtIndex:2]];

//IOS5以后,可以全局的设置一些控件的外观,分段控件就是其中一个(全局设置UISegmentedControl外观):

//cap insets用来指定哪些区域是固定不变的,未制定的区域则会repeat

UIImage *segmentSelected = [[UIImage imageNamed:@"bg_o.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];

UIImage *segmentUnselected = [[UIImage imageNamed:@"bg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];

UIImage *segmentSelectedUnselected = [UIImage imageNamed:@"line.png"] ;

UIImage *segUnselectedSelected = [UIImage imageNamed:@"line.png"] ;

UIImage *segmentUnselectedUnselected = [UIImage imageNamed:@"line.png"];

//Segmente未选中背景
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];

//Segmente选中背景
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected
forState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];

//Segmente左右都未选中时的分割线
//BarMetrics表示navigation bar的状态,UIBarMetricsDefault 表示portrait状态(44pixel height),UIBarMetricsLandscapePhone 表示landscape状态(32pixel height)

[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected
forLeftSegmentState:UIControlStateSelected
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setDividerImage:segUnselectedSelected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];

//字体
NSDictionary *textAttibutesUnSelected = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont systemFontOfSize:18],UITextAttributeFont,
[UIColor blackColor],UITextAttributeTextColor,
[UIColor whiteColor],UITextAttributeTextShadowColor,
[NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset,nil];

NSDictionary *textAttibutesSelected = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont systemFontOfSize:18],UITextAttributeFont,
[UIColor whiteColor],UITextAttributeTextColor,
[UIColor whiteColor],UITextAttributeTextShadowColor,
[NSValue valueWithCGSize:CGSizeMake(0, 0)],UITextAttributeTextShadowOffset,nil];

[[UISegmentedControl appearance] setTitleTextAttributes:textAttibutesUnSelected
forState:UIControlStateNormal];

[[UISegmentedControl appearance] setTitleTextAttributes:textAttibutesSelected
forState:UIControlStateSelected];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: