UISegmentedControl、UISlider、UISwitch
1 #import "AppDelegate.h" 2 3 @interface AppDelegate () 4 { 5 UISlider* lider; 6 } 7 8 @end 9 10 @implementation AppDelegate 11 12 13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 14 15 self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; 16 self.window.backgroundColor = [UIColor whiteColor]; 17 [self.window makeKeyAndVisible]; 18 19 #pragma mark - UISEGMENTEDCONTROL 20 // 创建,并初始化设置各个标题,有多少个标题就代表有多少个选项 21 UISegmentedControl* segmented = [[UISegmentedControl alloc]initWithItems:@[@"Demo1",@"Demo2",@"Demo3",@"Demo4"]]; 22 // 设置位置及大小 23 [segmented setFrame:CGRectMake(10, 50, 300, 40)]; 24 // 根据下标索引单独指定设置标题 25 [segmented setTitle:@"Demo3" forSegmentAtIndex:0]; 26 // 根据下标索引单独指定设置图片 27 [segmented setImage:[UIImage imageNamed:@"lan.png"] forSegmentAtIndex:2]; 28 // 指定索引插入选项并设置图片 29 [segmented insertSegmentWithImage:[UIImage imageNamed:@"inamgName"] atIndex:1 animated:YES]; 30 // 指定索引插入选项并设置标题 31 [segmented insertSegmentWithTitle:@"Demo5" atIndex:3 animated:YES]; 32 // 移除指定索引的选项 33 [segmented removeSegmentAtIndex:0 animated:YES]; 34 // 设置指定索引的宽度 35 [segmented setWidth:10 forSegmentAtIndex:2]; 36 // 设置指定选项中图片等,左上角的位置 37 [segmented setContentOffset:CGSizeMake(10.0, 10.0) forSegmentAtIndex:1]; 38 39 // 获取指定索引选项的图片 imageForSegmentAtIndex 40 UIImageView* imageAtIndex = [[UIImageView alloc]initWithImage:[segmented imageForSegmentAtIndex:2]]; 41 imageAtIndex.frame = CGRectMake(60, 100, 30, 30); 42 // UIImage* imageAtIndex = [[UIImage alloc]init]; 43 // imageAtIndex = [segmented imageForSegmentAtIndex:2]; 44 45 // 获取指定索引的标题 titleForSegmentAtIndex 46 UILabel* titleAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 30, 30)]; 47 titleAtIndex.text = [segmented titleForSegmentAtIndex:1]; 48 [self.window addSubview:titleAtIndex]; 49 50 // 获取总选项数 segmented.numberOfSegments 51 UILabel* unmber = [[UILabel alloc]initWithFrame:CGRectMake(140, 100, 30, 30)]; 52 unmber.text = [NSString stringWithFormat:@"%d",segmented.numberOfSegments]; 53 [self.window addSubview:unmber]; 54 55 // 获取指定索引选项的宽度widthForSegmentAtIndex: 56 UILabel* widthAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(180, 100, 70, 30)]; 57 widthAtIndex.text = [NSString stringWithFormat:@"%f",[segmented widthForSegmentAtIndex:2]]; 58 [self.window addSubview:widthAtIndex]; 59 // 设置默认选择项索引 60 segmented.selectedSegmentIndex = 1; 61 62 // 设置标题颜色 63 segmented.tintColor = [UIColor redColor]; 64 65 // 设置样式 (iOS7.0以后弃用了) 66 // segmented.segmentedControlStyle = UISegmentedControlStylePlain; 67 //UISegmentedControlSegmentCenter 68 69 // 设置在点击后是否恢复原样 70 segmented.momentary = YES; 71 // 是否可以连续点击 72 segmented.multipleTouchEnabled = YES; 73 // 设置指定索选项不可选 74 [segmented setEnabled:NO forSegmentAtIndex:4]; 75 76 // 判断指定索引是否可选 77 BOOL enableFlag = [segmented isEnabledForSegmentAtIndex:3]; 78 NSLog(@"%d",enableFlag); 79 80 // 移除所有选项 81 [segmented removeAllSegments]; 82 83 /* UISegmentedControl控件的一些自定义样式 */ 84 // 设置背景图片及状态 85 [segmented setBackgroundImage:[UIImage imageNamed:@"imageName1"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 86 [segmented setBackgroundImage:[UIImage imageNamed:@"imageName2"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 87 88 // UITextAttributeTextColor UITextAttributeTextShadowColor UITextAttributeFont等iOS7.0以后被弃用 改用为 NSForegroundColorAttributeName NSFontAttributeName NSShadowAttributeName 89 //NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor,[UIFont systemFontOfSize:15],UITextAttributeFont,[UIColor clearColor],UITextAttributeTextShadowColor, nil]; 90 NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],NSForegroundColorAttributeName,[UIFont systemFontOfSize:15],NSFontAttributeName,[UIColor clearColor],NSShadowAttributeName, nil]; 91 [segmented setTitleTextAttributes:dic forState:UIControlStateNormal]; 92 93 94 // 监听事件 95 [segmented addTarget:self action:@selector(dian:) forControlEvents:UIControlEventValueChanged]; 96 97 // 自定义UIBarButtonItem, 98 UIBarButtonItem* segButton = [[UIBarButtonItem alloc]initWithCustomView:segmented]; 99 // 添加到导航栏中 100 // self.navigationItem.rightBarButtonItem = segButton; 101 102 // 添加到视图上 103 [self.window addSubview:segmented]; 104 105 106 #pragma mark - UISLIDER 107 // UISlider---滑杆,UISlider不可以改变高度 108 // 新建slider 并初始化位置及大小,注意:UISlider的高度可以随便设置,不可以为0,为0时滑块滑不动 109 110 lider = [[UISlider alloc]initWithFrame:CGRectMake(20, 150, 180, 30)]; 111 // 设置背景颜色 112 lider.backgroundColor = [UIColor purpleColor]; 113 // 不透明度 114 lider.alpha = 0.9; 115 // 设置标签 116 lider.tag = 1; 117 118 /* 创建完毕的同时我们要设置好滑块的范围,如果你没有设置,那么会使用默认的0.0到1.0之间的值 119 UISlider提供了两个属性来设置范围:minimumValue和maximumValue 120 */ 121 // 设置lider所能滑动到的最小值(下限) 122 lider.minimumValue = 0; 123 // 设置lider所能滑动到的最大值(上限) 124 lider.maximumValue = 50; 125 // 同时你也可以为滑块设定一个当前值(初始值) 126 lider.value = 25; 127 // [lider setValue:25 animated:YES]; 128 129 // 得到slider的值 130 float value = lider.value; 131 132 // 设置了会减小滚动区域的宽度,但整个slider的宽度不变 133 lider.minimumValueImage = [UIImage imageNamed:@"设置slider已滑过的背景图片"]; 134 lider.maximumValueImage = [UIImage imageNamed:@"设置slider为滑动的背景图片"]; 135 136 // 设置响应Slider的响应方法 137 [lider addTarget:self action:@selector(sliderValueChange:) forControlEvents:UIControlEventValueChanged]; 138 // 默认值为YES,设置为YES只要滑块滚动就会触发change方法,设置为NO只要当滑块停止移动时才会触发change方法 139 lider.continuous = YES; 140 141 #pragma mark - 滑动条 142 /* 滑动条 */ 143 /* 两端添加图片:滑块可以在任何一段显示图像。添加图像后会导致滑动条缩短,所以记得要在创建的时候增加滑块的宽度来适应图像 */ 144 // 设置最小区域的图片 145 [lider setMinimumTrackImage:[UIImage imageNamed:@"设置滑块已滑过的滑动条背景图片,最好宽度和slider一样"] forState:UIControlStateNormal]; 146 // 设置最大区域的图片 147 [lider setMaximumTrackImage:[UIImage imageNamed:@"设置滑块未滑过的滑动条背景图片,最好宽度和slider一样"] forState:UIControlStateNormal]; 148 /* 你可以根据滑块的各种不同状态显示不同的图像,下面是可用状态 149 UIControlStateNormal // 正常 150 UIControlStateHighlighted // 高亮 151 UIControlStateDisabled // 禁用 152 UIControlStateSelected // 选择 153 */ 154 // 得到当前滑块已滑过的图片,如果有的话 155 UIImage* image = [[UIImage alloc]init]; 156 image = lider.currentMinimumTrackImage; 157 // 得到当前滑块未滑过的图片,如果有的话 158 image = lider.currentMaximumTrackImage; 159 // 设置滑块已滑过的滑条颜色,如果设置了左边的图片就不会显示 160 lider.minimumTrackTintColor = [UIColor redColor]; 161 // 设置滑块未滑过的滑条颜色,如果设置了右边的图片就不会显示 162 lider.maximumTrackTintColor = [UIColor greenColor]; 163 164 #pragma mark - 滑动块 165 /* 滑动块 */ 166 // 普通状态 167 [lider thumbImageForState:UIControlStateNormal]; 168 // 设置高亮状态的滑块样式 169 [lider setThumbImage:[UIImage imageNamed:@"设置滑块样子的图片"] forState:UIControlStateHighlighted]; 170 // 设置滑块的颜色,如果设置了滑块的样式图片就不会显示 171 lider.thumbTintColor = [UIColor greenColor]; 172 173 174 // 添加到父视图 175 [self.window addSubview:lider]; 176 // 添加到导航栏 177 // [self.navigationItem.titleView addSubview:lider]; 178 179 180 181 #pragma mark - UISWITCH 182 // 创建switc 并初始化设置位置及大小 183 UISwitch* switc = [[UISwitch alloc]initWithFrame:CGRectMake(20, 220, 100, 100)]; 184 // 设置背景颜色 185 switc.backgroundColor = [UIColor whiteColor]; 186 // 设置UISwitch的初始化状态,设置初始化为NO的一边 187 switc.on = YES; 188 [switc setOn:YES animated:YES]; 189 // 设置响应事件 190 [switc addTarget:self action:@selector(switchIsChange:) forControlEvents:UIControlEventValueChanged]; 191 192 // 开关控件关闭状态边框颜色、(外部颜色) 193 switc.tintColor = [UIColor redColor]; 194 // 开关控件切换槽颜色 195 switc.onTintColor = [UIColor greenColor]; 196 // 开关控件圆按钮颜色 197 switc.thumbTintColor = [UIColor purpleColor]; 198 199 // 设置控件关闭状态图片 200 switc.onImage = [UIImage imageNamed:@"on"]; 201 // 设置控件打开状态图片 202 switc.offImage = [UIImage imageNamed:@"off"]; 203 204 // 添加到视图 205 [self.window addSubview:switc]; 206 207 return YES; 208 } 209 // UISegmentedControl 响应事件 210 - (void)dian:(UISegmentedControl*)segment{ 211 NSInteger index = segment.selectedSegmentIndex; 212 switch (index) { 213 case 0:{ 214 NSLog(@"Dome1"); 215 break; 216 }case 1:{ 217 NSLog(@"Dome2"); 218 break; 219 }case 2:{ 220 NSLog(@"Dome3"); 221 break; 222 }case 3:{ 223 NSLog(@"Dome4"); 224 break; 225 } 226 default: 227 break; 228 } 229 } 230 // UISlider 响应事件 231 - (void)sliderValueChange:(UISlider*)sl{ 232 NSLog(@"UISlider........"); 233 if ([sl isEqual:lider]) { 234 NSLog(@"ValureUISlider......."); 235 } 236 } 237 // UISwitch 响应事件 238 - (void)switchIsChange:(UISwitch*)sw{ 239 NSLog(@"UISwitch......"); 240 if (sw.isOn) { 241 NSLog(@"The switch is turned on"); 242 }else{ 243 NSLog(@"The switch is turned off"); 244 } 245 }