zoukankan      html  css  js  c++  java
  • 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.
    }
  • 相关阅读:
    【BZOJ 2820】 YY的GCD (莫比乌斯+分块)
    【BZOJ 2005】[Noi2010]能量采集 (容斥原理| 欧拉筛+ 分块)
    【HDU 4898】 The Revenge of the Princess’ Knight (后缀数组+二分+贪心+...)
    【BZOJ 3473】 字符串 (后缀数组+RMQ+二分 | 广义SAM)
    【BZOJ3439】 Kpm的MC密码 (TRIE+主席树)
    【GDOI2014 DAY2】Beyond (扩展KMP)
    【转】【最大子矩阵问题】【悬线法】 学习笔记
    【HDU4333】Revolving Digits(扩展KMP+KMP)
    【转】各种字符串算法大总结
    【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论
  • 原文地址:https://www.cnblogs.com/mafeng/p/5685715.html
Copyright © 2011-2022 走看看