UIControl的子类UISwitch, UISegmentedCntrol, UIPageControl详解
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UISwitch *swit = [[UISwitch alloc] initWithFrame:CGRectMake(, , , )];
[self.view addSubview:swit];
// 3. (开关按钮)圆圈的颜色
swit.thumbTintColor = [UIColor yellowColor];
// switch 宽和高不影响控件, 只有x和y
// 1. 开启时的控件内部颜色
swit.onTintColor = [UIColor blueColor];
// 2. 边框及切换到关闭的时的颜色(non_resettable)
swit.tintColor = nil;
// 4. 打开时的图片, ios7后失效
swit.onImage = [UIImage imageNamed:@""];
// 5. 关闭时的图片, 也失效
swit.offImage = [UIImage imageNamed:@""];
// 6. 判断switchControl的开闭状态
// 通过setter方法, 给变switchControl的初始状态
swit.on = YES;
NSLog(@"%@", swit.isOn ? @"yes" : @"no");
[swit setOn:YES animated:NO];
// 添加绑定事件(与button相同)
[swit addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged]; // slider
// 高度不影响控件的高度, 这个控件永远居中与视图中间
UISlider *slider = [[UISlider alloc]initWithFrame:CGRectMake(, , , )];
[self.view addSubview:slider];
// slider.minimumValueImage = [UIImage imageNamed:@"456"];
// 1. 滑块最大值和最小值, 最大和最小可以根据需求去改变
slider.maximumValue = 200.0f;
// 2. 当前滑块的值
slider.value = 50.0f;
[slider setValue: animated:YES];
// 3. 最小值和最大值显示的图片
// maximumValueImage minimumValueImage
// 4. containous 为no时, 只在按下和松手是触发方法
slider.continuous = NO;
NSLog(@"%@", slider.isContinuous ? @"yes" : @"no");
// 5. 绑定事件
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged]; CGRect rect = [slider maximumValueImageRectForBounds:slider.bounds];
NSLog(@"%f, %f", rect.size.width, rect.size.height);
// 8. maximumTrackTintColor 未移动到的区域的颜色
slider.maximumTrackTintColor = [UIColor blueColor];
// 9. minimumTrackTintColor 已移动的区域的颜色
slider.minimumTrackTintColor = [UIColor whiteColor];
// 10. 滑块的颜色
// slider.thumbTintColor = [UIColor blueColor];
// 11. 设置进度条滑块左边的图片
[slider setMinimumTrackImage:[UIImage imageNamed:@"player_slider_playback_right"] forState:UIControlStateNormal];
// 12. 设置进度条滑块右边的图片
[slider setMaximumTrackImage:[UIImage imageNamed:@"player_slider_playback_left"] forState:UIControlStateNormal];
// 13. 设置圆圈的图片
[slider setThumbImage:[UIImage imageNamed:@"player_slider_playback_thumb"] forState:UIControlStateNormal]; self.seg = [[UISegmentedControl alloc] initWithItems:@[@"first", @"second", @"last", @"one", @"two"]];
// segment不给frame, 系统会自动计算大小, 推荐, 自己加上frame
self.seg.frame = CGRectMake(, , , );
[self.view addSubview:self.seg];
// 1. momentary 设置为yes 如果点击选中没有选中的效果,
// 默认为NO
self.seg.momentary = YES;
// 2. seg的控制段的数量
NSInteger number = self.seg.numberOfSegments;
NSLog(@"分段控制器的段数:(items的个数) %ld", number);
// 3. remove 移除
// 4. insertSegmentWithTitle:@"name" atIndex:2 animated:YES 插入
// 5. setTitle:forSegmentAtIndex: 用来修改对应下标的标题
// 6. setWidth:0 forSegmentAtIndex: 默认是0
[self.seg setWidth: forSegmentAtIndex:];
// 7. setContentOffset:<#(CGSize)#> forSegmentAtIndex:<#(NSUInteger)#> 设置对应下标内容的偏移
[self.seg setContentOffset:CGSizeMake(, ) forSegmentAtIndex:];
// 8. 能否被选中
[self.seg setEnabled:NO forSegmentAtIndex:];
// 9. selectedSegmentIndex 开始选中的下标
self.seg.selectedSegmentIndex = ;
// 10. tintColor文字及边框颜色
self.seg.tintColor = [UIColor greenColor];
// 11. apportionsSegmentWidthsByContent 默认为no
// 如果分段控制器的段宽为0时, 并且该属性为YES, 系统会自动计算
self.seg.apportionsSegmentWidthsByContent = YES;
// 12. 绑定事件
[self.seg addTarget:self action:@selector(segAction:) forControlEvents:UIControlEventValueChanged]; UIPageControl *page = [[UIPageControl alloc] initWithFrame:CGRectMake(, , , )];
page.backgroundColor = [UIColor blackColor];
// 1. 分页控制器的页数 默认为 0
page.numberOfPages = ;
// 2. 当前页
page.currentPage = ;
// 3. 当只有一页的时候pageControl隐藏
page.hidesForSinglePage = YES;
// 4.
CGSize size = [page sizeForNumberOfPages:];
NSLog(@"size++%@", NSStringFromCGSize(size));
// 其他页的颜色
page.pageIndicatorTintColor = [UIColor redColor];
// 当前页的颜色
page.currentPageIndicatorTintColor = [UIColor whiteColor];
[self.view addSubview:page];
// 绑定事件
[page addTarget:self action:@selector(pageControllChange:) forControlEvents:UIControlEventValueChanged];
// 设置为yes, 关闭系统事件page的切换, 直到调用updateCurrentPageDisplay的方法, 才会显示
page.defersCurrentPageDisplay = YES;
}
- (void)pageControllChange:(UIPageControl *)page {
NSLog(@"Change");
[page updateCurrentPageDisplay];
}
- (void)segAction:(UISegmentedControl *)seg {
NSLog(@"%ld", seg.selectedSegmentIndex);
switch (seg.selectedSegmentIndex) {
case : break;
case : break;
// ....
default:
break;
}
}
//
- (void)sliderAction:(UISlider *)slider {
NSLog(@"%f", slider.value); }
- (void)switchAction:(UISwitch *)swit {
NSLog(@"开关事件");
[self.seg insertSegmentWithTitle:@"name" atIndex: animated:YES];
[self.seg insertSegmentWithImage:[UIImage imageNamed:@"player_slider_playback_thumb"] atIndex: animated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
UIControl的子类UISwitch, UISegmentedCntrol, UIPageControl详解的更多相关文章
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- Java多态性详解——父类引用子类对象
来源:http://blog.csdn.net/hikvision_java_gyh/article/details/8957456 面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实 ...
- 第7.20节 案例详解:Python抽象类之真实子类
第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一. 案例说明 本节定义 ...
- 第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类
第7.19节 Python中的抽象类详解:abstractmethod.abc与真实子类 一. 引言 前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不 ...
- iOS开发——UI篇&ScrollView详解
创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: CGRect bounds = [ [ UIS ...
- ScrollView详解
创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: 1 2 3 CGRect bounds = [ ...
- 《招一个靠谱的移动开发》iOS面试题及详解(上篇)
以下问题主要用于技术的总结与回顾 主要问题总结 单例的写法.在单利中创建数组应该注意些什么. NSString 的时候用copy和strong的区别. 多线程.特别是NSOperation 和 GCD ...
随机推荐
- Hadoop案例(二)压缩解压缩
压缩/解压缩案例 一. 对数据流的压缩和解压缩 CompressionCodec有两个方法可以用于轻松地压缩或解压缩数据.要想对正在被写入一个输出流的数据进行压缩,我们可以使用createOutput ...
- [实战]MVC5+EF6+MySql企业网盘实战(14)——逻辑重构
写在前面 上篇文章关于修改文件夹和文件名称导致的找不到物理文件的问题,这篇文章将对其进行逻辑的修改. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6 ...
- Java(静态)变量、(静态)代码块、构造方法的执行顺序
Java(静态)变量.(静态)代码块.构造方法的执行顺序 总结 1.父类静态变量和静态代码块(先声明的先执行); 2.子类静态变量和静态代码块(先声明的先执行); 3.父类的变量和代码块(先声明的先执 ...
- thinkphp5.0 API友好
新版ThinkPHP针对API开发做了很多的优化,并且不依赖原来的API模式扩展. 数据输出 新版的控制器输出采用Response类统一处理,而不是直接在控制器中进行输出,通过设置default_re ...
- 微信用户授权,获取code
1.进入微信公众平台 2.进入到 开发->接口授权,点击 网页服务->网页授权->网页授权获取用户基本信息 后面的“修改“. 3.点击网页授权域名的设置 4.设置授权回调域名 ...
- mysql-8.0.12安装和配置
1.下载Mysql8.0.12压缩包.下载地址:https://dev.mysql.com/downloads/file/?id=480557 2.解压文件到本地指定目录.这里我的mysql根目录是: ...
- 验证Xcode真伪的方法,来自苹果官网
验证Xcode真伪的方法,来自苹果官网 Xcode的验证你的版本 2015年9月22日 注意:中文为有道翻译,看下验证方法即可. 我们最近将应用程序从应用程序商店,还建有Xcode的假冒 ...
- 解决ubuntu解压windows生成的zip文件时乱码问题
在windows上压缩的文件,是以系统默认编码中文来压缩文件.由于zip文件中没有声明其编码,所以linux上的unzip一般以默认编码解压,中文文件名会出现乱码. 虽然2005年就有人把这报告为bu ...
- PHP 笔记——PDO操作数据库
一.简介 PHP 5.1可使用轻量级的统一接口 PDO(PHP Data Object,PHP数据对象)来访问各种常见的数据库.而使用PDO只需要指定不同的 DSN(数据源名称)即可访问不同的数据 ...
- BZOJ1030 [JSOI2007]文本生成器(AC自动机)
做到了AC自动机的题目,复习了一下AC自动机,学习了黄学长代码,这个题呢,我们可以模拟在AC自动机上的操作,dp数组f[i][j]表示前i个字符,我们在AC自动机上处在j号节点的方案数. 我们可以计算 ...