iOS之分段控制器UISegmentedControl

作者: 非典型技术宅 | 来源:发表于2016-12-05 09:46 被阅读386次

    1. 分段控制器(UISegmentedControl)

    • 作用:同一时刻只能选中一个标签
    • 基本使用:创建、设置选中、将其放在Navigation标题上
    //创建
    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:@[@"分组",@"全部"]];
    
    //将其放在Navigation标题上
    self.navigationItem.titleView = segmentControl; //分组器默认选中项segmentControl.selectedSegmentIndex = 0;
    

    2. 事件监听

    • 监听 UISwitch 的状态改变,要使用 Value Changed 事件(可参照 UISlider 的使用)。
    • 常用的监听事件:UIControlEventValueChanged,值改变事件
    
    [segmentControl addTarget:self action:@selector(segmentControlChangeValue:) forControlEvents:UIControlEventValueChanged];
    

    3. 手势事件大全

    • iOS官方了20中手势,可以用来监听。
    
    typedef NS_OPTIONS(NSUInteger, UIControlEvents) { 
    UIControlEventTouchDown = 1 << 0, // on all touch downs 
    UIControlEventTouchDownRepeat = 1 << 1, // on multiple touchdowns(tap count > 1) 
    UIControlEventTouchDragInside = 1 << 2, 
    UIControlEventTouchDragOutside = 1 << 3, 
    UIControlEventTouchDragEnter = 1 << 4,
    UIControlEventTouchDragExit = 1 << 5, 
    UIControlEventTouchUpInside = 1 << 6, 
    UIControlEventTouchUpOutside = 1 << 7, 
    UIControlEventTouchCancel = 1 << 8,
    
    UIControlEventValueChanged = 1 << 12, // sliders, etc. 
    UIControlEventPrimaryActionTriggered NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 13, // semantic action: for buttons, etc. 
    UIControlEventEditingDidBegin = 1 << 16, // UITextField 
    UIControlEventEditingChanged = 1 << 17, 
    UIControlEventEditingDidEnd = 1 << 18, UIControlEventEditingDidEndOnExit = 1 << 19, // 'return key' ending editing 
    
    UIControlEventAllTouchEvents = 0x00000FFF, // for touch events 
    UIControlEventAllEditingEvents = 0x000F0000, // for UITextField 
    UIControlEventApplicationReserved = 0x0F000000, // range available for application use 
    UIControlEventSystemReserved = 0xF0000000, // range reserved for internal framework use 
    UIControlEventAllEvents = 0xFFFFFFFF
    };
    
    • UIControlEventTouchDown:单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。
    • UIControlEventTouchDownRepeat:多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。
    • UIControlEventTouchDragInside:当触摸在控件窗口内拖动时。
    • UIControlEventTouchDragOutside:当触摸在控件窗口之外拖动时。
    • UIControlEventTouchDragEnter:当触摸从控件窗口之外拖动到内部时。
    • UIControlEventTouchDragExit:当触摸从控件窗口内部拖动到外部时。
    • UIControlEventTouchUpInside:所有在控件之内触摸抬起事件。
    • UIControlEventTouchUpOutside:所有在控件之外触摸抬起事件
    • UIControlEventTouchCancel:所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。
    • UIControlEventValueChanged:当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。
    • UIControlEventEditingDidBegin:当文本控件中开始编辑时发送通知。

    • UIControlEventEditingChanged:当文本控件中的文本被改变时发送通知。

    • UIControlEventEditingDidEnd:当文本控件中编辑结束时发送通知。

    • UIControlEventEditingDidOnExit:当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。

    • UIControlEventAlltouchEvents:通知所有触摸事件。

    • UIControlEventAllEditingEvents:通知所有关于文本编辑的事件。

    • UIControlEventAllEvents:通知所有事件。

    2.3 设置segment的显示样式(segmentedControlStyle)

    
    typedef NS_ENUM(NSInteger, UISegmentedControlStyle) { 
    UISegmentedControlStylePlain, // large plain:系统默认平板样式 
    UISegmentedControlStyleBordered, // large bordered:大宽边,黑边 
    UISegmentedControlStyleBar, // small button/nav bar style. tintable:条状样式 
    UISegmentedControlStyleBezeled, // DEPRECATED. Do not use this style.:不要用这个类型
    } NS_DEPRECATED_IOS(2_0, 7_0, "The segmentedControlStyle property no longer has any effect") __TVOS_PROHIBITED;
    

    2.4 UISegmentedControl的常见属性

    属性名称 作用
    BOOL momentary 点击之后是否恢复原样
    numberOfSegments(只读) 总选项数
    selectedSegmentIndex 用来设置或者获取选中项

    2.5 设置分段控制器的宽度

    • 因为分段控制器有很多段,方便起见,可以循环赋值。
    
    // 批量设置分组指示器的宽度 
    for (NSInteger i = 0 ; i < segmentControl.numberOfSegments; i++) { 
    [segmentControl setWidth:80 forSegmentAtIndex:i];
     }
    

    相关文章

      网友评论

        本文标题:iOS之分段控制器UISegmentedControl

        本文链接:https://www.haomeiwen.com/subject/hgskmttx.html