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 }
原文地址:https://www.cnblogs.com/WillingToAsk1946zzh/p/4482979.html