iOS 之UIControl及其子类
一. 已学类的继承关系
Objective-C中所有类的父类为NSObject类
NSObject的子类有:NSString NSArray NSDictionary NSSet NSDate UIGestureRecognizer UIResponder等等
NSString 子类: NSMutableString
NSArray 子类: NSMutableArray
NSDictionary 子类: NSMutableDictionary
NSSet 子类: NSMutableSet
UIGestureRecognizer 子类: UITapGestureRecognizer(轻拍) UISwipeGestureRecognizer(轻扫) UILongPressGestureRecognizer(长按) UIPanGestureRecognizer(平移) UIRotationGestureRecognizer(旋转) UIPinchGestureRecognizer(捏合)
UIResponder 子类: UIView(视图) UIApplication AppDelegate UIViewController(视图控制器)
UIView 子类: UILabel(标签) UIControl(控制视图) UIImageView UIWindow
UIControl 子类: UIButton UITextField UISlider UIDatePicker UISegmentedControl
UIViewController 子类: UIAlertController
二. UIControl初识
UIControl是具有控制功能的视图.只要跟控制相关的控件都是其子类.UIControl是个抽象类,通常使用的时候用的都是其子类.
事件响应的三种形式:基于触摸,基于值,基于编辑
UIControl的子类有:UIButton,UITextField,UISlider,UISwitch,UIDatePicker,UIPageControl,UISegmentedControl
有这几个子类创建的对象均有
添加一个事件的方法:addTarget:(id) target action:(SEL) forControlEvents:
移除一个事件的方法:removeTarget:(id)target action:(SEL) forControlEvents:
三. UISwitch的使用(开关)
UISwitch继承于UIControl通常被叫做开关.初始化方法中指定的frame是没有意义的,系统会指定控件的大小,均为默认值.
onTintColor //设置开启时的颜色
tintColor //设置开关风格颜色
thumbTintColor //设置开关按钮颜色
switch.on = YES; //设置开关默认为开启状态
四. UISlider的使用(滑块)
UISlider是iOS中的滑块控件,通常用于控制视频播放进度,控制音量等等,继承于UIControl,滑块提供了一序列的连续的值,滑块停在不同的位置,或得滑块上的值也不同.
UISlider的常用属性:
minimumValue //设置滑块的最小值,即:滑块在最左边的时候的值
maximumValue //设置滑块的最大值,即:滑块在最右边的时候的值
value //设置滑块的当前值.
minimumTrackTintColor //滑块划过的的颜色
maximumTrackTintColor //滑块未划过的颜色
同样的可以添加addTarget action方法.
五. UIDatePicker的使用(扩展)
时间选择器,创建对象的方式与其他UIControl类的对象创建对象的方式类似.
属性:
datePickerMode时间选择器的形式.获取到的Date可以通过NSDateFormatter对象设置格式控制符控制时间格式,例如:yyyy-MM-dd年-月-日然后通过该类的实例化方法,stirngFromDate方法将date转化成为字符串.
六. UIAlertController警告对话框 (扩展)
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Tittle" message:@"This is a tittle" preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
// 对话框按钮
UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"Agree" style:UIAlertActionStyleDefault handler:nil];
// 对话框警示(按钮为红色)
UIAlertAction *action = [UIAlertAction actionWithTitle:@"Agree2" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"Press agree2");
}];
//添加对话框上的按钮
[alertController addAction:otherAction];
[alertController addAction:action];
[alertController addAction:cancelAction];
// 切换视图控制器
[self presentViewController:alertController animated:YES completion:nil];
七. UISegmentedControl的使用
UISegmentedControl是iOS中常用的分段控件,每个segment都能点击,它相当继承了若干个button.分段控件提供一栏按钮(有时候成为按钮栏),但一个时刻只能激活一个按钮.分段控件会导致用户在屏幕上看到的内容发生变化.它们通常用在不同类别的信息之间选择,或者在切换不同的视图.
UISegmentedcontrol属性以及方法:
initWithItems: //UISegmentedControl独有的初始化方法.用来创建多个分段
selectedSegmentAtIndex //设定被选中的分段
tintColor //segment的边框颜色
addTarget方法的时候,处理事件的枚举为valueChanged方法
通常状态下,UISegmentedControl的addTarget方法实现中通过switch结合进行
防止图片被渲染
UIImage *image = [[UIImage imageNamed:imagePath] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
八. UIPageControl的使用
UIPageControl控件是与UIScrollView(滑动视图)配合显示大量数据的时候,会用来控制UIScrollView的翻页.在滚动ScrollView时可以通过PageControl中的小白点来观察当前页面的位置,也可以通过pageControl中的小白点来滚动到指定的页面.
UIPageControl的属性:
numebrOfPages 页面的个数
currentPage 选中的点
UIPageControl的addTarget action方法中使用ValueChanged.
UIPageControl的属性:
currentPageIndicatorTintColor 当前选中点的颜色
pageIndicatorTintColor 其余点的颜色