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(20, 300, 100, 20)];
    [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:@"456"];
    // 5. 关闭时的图片, 也失效
    swit.offImage = [UIImage imageNamed:@"456"];
    // 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(0, 100, 100, 20)];
    [self.view addSubview:slider];
   // slider.minimumValueImage = [UIImage imageNamed:@"456"];
    // 1. 滑块最大值和最小值, 最大和最小可以根据需求去改变
    slider.maximumValue = 200.0f;
    // 2. 当前滑块的值
    slider.value = 50.0f;
    [slider setValue:100 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(0, 0, 600, 50);
    [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:0 forSegmentAtIndex:0];
    // 7. setContentOffset:<#(CGSize)#> forSegmentAtIndex:<#(NSUInteger)#> 设置对应下标内容的偏移
    [self.seg setContentOffset:CGSizeMake(20, 0) forSegmentAtIndex:0];
    // 8. 能否被选中
    [self.seg setEnabled:NO forSegmentAtIndex:0];
    // 9. selectedSegmentIndex 开始选中的下标
    self.seg.selectedSegmentIndex = 1;
    // 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(10, 500, 100, 30)];
    page.backgroundColor = [UIColor blackColor];
    // 1. 分页控制器的页数 默认为 0
    page.numberOfPages = 5;
    // 2. 当前页
    page.currentPage = 3;
    // 3. 当只有一页的时候pageControl隐藏
    page.hidesForSinglePage = YES;
    // 4.
    CGSize size = [page sizeForNumberOfPages:4];
    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 1:

            break;
        case 2:

            break;
            // ....
        default:
            break;
    }
}
    //
- (void)sliderAction:(UISlider *)slider {
    NSLog(@"%f", slider.value);

}
- (void)switchAction:(UISwitch *)swit {
        NSLog(@"开关事件");
    [self.seg insertSegmentWithTitle:@"name" atIndex:2 animated:YES];
    [self.seg insertSegmentWithImage:[UIImage imageNamed:@"player_slider_playback_thumb"] atIndex:2 animated:YES];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
时间: 2024-11-04 16:27:35

UIControl的子类UISwitch, UISegmentedCntrol, UIPageControl详解的相关文章

winfrom 基类窗体与子类窗体load事件详解

今日在写代码时,需要在子窗体运行时调用基类窗体中的load事件,顺带将该部分功能做一个详细的了解. Winform窗体在初始化到呈现在用户眼前会依次经历三个阶段,构造-加载-显示,分别对应.NET 窗体中的 InitializeComponent,onLoad,show三个调用函数,以下: InitializeComponent:初始化窗体及窗体上的控件,加载并分配资源,注册相关事件 onLoad:注册装载窗口事件,是窗体启动时调用该函数,触发formload事件,从而调用From_Load事件

Format类及其子类功能和用法详解

1.   Format类结构: ·        java.lang.Object ·        java.text.Format ·        All Implemented Interfaces: Serializable, Cloneable Direct Known Subclasses: DateFormat, MessageFormat, NumberFormat public abstract class Format extends Object implements S

iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类

核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h> ,在iOS7中不需要 2.动画分类 基本动画    CABasicAnimation 关键帧动画  CAKeyframeAnimation 动画组     CAAnimationGro

iOS开发之手势gesture详解(二)

与其他用户界面控件交互 UIControl子类会覆盖parentView的gesture.例如当用户点击UIButton时,UIButton会接受触摸事件,它的parentView不会接收到.这仅适用于手势识别重叠的默认动作的控制,其中包括: 一根手指单击动作:UIButton, UISwitch, UIStepper, UISegmentedControl, and UIPageControl. 一根手指擦碰动作:UISlider 一根手指拖动动作:UISwitch 包含多点触摸的事件 在iO

ScrollView详解

创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: 1 2 3 CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ]; 当你创建完滚动视图后,你可以将另一个视图的内容粘合到滚动视

iOS开发——UI篇&amp;ScrollView详解

ScrollView详解 创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ]; 当你创建完滚动视图后,你可以将另一个视图的内

《招一个靠谱的移动开发》iOS面试题及详解(上篇)

多线程.特别是NSOperation 和 GCD 的内部原理. 运行时机制的原理和运用场景. SDWebImage的原理.实现机制.如何解决TableView卡的问题. block和代理的,通知的区别.block的用法需要注意些什么. strong,weak,retain,assign,copy nomatic 等的区别. 设计模式,mvc,单利,工厂,代理等的应用场景. 单利的写法.在单利中创建数组应该注意些什么. NSString 的时候用copy和strong的区别. 响应值链. NSTi

iOS开发之手势gesture详解(一)

前言 在iOS中,你可以使用系统内置的手势识别(GestureRecognizer),也可以创建自己的手势.GestureRecognizer将低级别的转换为高级别的执行行为,是你绑定到view的对象,当发生手势,绑定到的view对象会响应,它确定这个动作是否对应一个特定的手势(swipe,pinch,pan,rotation).如果它能识别这个手势,那么就会向绑定它的view发送消息,如下图 UIKit框架提供了一些预定义的GestureRecognizer.包含下列手势 UITapGestu

[gitbook] Android框架分析系列之Android Binder详解

请支持作者原创: https://mr-cao.gitbooks.io/android/content/android-binder.html Android Binder详解 Table of Contents 1. binder简介 2. binder的实现 2.1. IBinder类简介 2.2. IInterface类简介 2.3. BpBinder和BBinder简介 2.4. ProcessState和IPCThreadState简介 2.5. ServiceManager简介 2.