断言和分段控制器1. 断言(Assertions)2. 分段控制器(UISegmentedControl)

1. 断言(Assertions)

  • 断言检查对应预期结果的具体条件。如果条件不符合预期结果, Xcode会报错指出断言失败。例如,可以断言你的Developer 类响应“writeKillerApp: message”;如果它没有,断言失败,Xcode报错。
  • 例如:判断是否是UIViewController 的字类
    NSAssert([class isSubclassOfClass:[UIViewController class]], @"-----------%@ is not a kind of ViewController-----------",classname)

2. 分段控制器(UISegmentedControl)

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

2.1 事件监听

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

2.2 手势事件大全

  • 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];
 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

Spread for Windows Forms高级主题(7)---自定义打印的外观

表单打印的多个部分都可以进行自定义,大多数的自定义选项存在于PrintInfo对象中。大多数打印选项是在PrintInfo对象上进行设置,并在表单级别上应用。当...

2957
来自专栏xx_Cc的学习总结专栏

iOS-UITextField 全面解析iOS中UITextField 使用全面解析UITextField的代理方法通知UITextField 在storyboard 中设置属性

3646
来自专栏糊一笑

IScroll的那些事——内容不足时下拉刷新

之前项目中的列表是采用的IScroll,但是在使用IScroll有一个问题就是:当内容不足全屏的时候,是木有办法往下拉的,这样就达不到刷新的目的了。【这是本人工...

35911
来自专栏Python小屋

Python+pandas+matplotlib数据分析与可视化案例(附源码)

问题描述:运行下面的程序,在当前文件夹中生成饭店营业额模拟数据文件data.csv ? 然后完成下面的任务: 1)使用pandas读取文件data.csv中的数...

3414
来自专栏熊训德的专栏

Hbase compaction 源码分析一:compaction 概况分析

本文档从框架的源码角度梳理了,hbase 在什么情况下会触发compaction,并通过官方文档说明出发minor 和major compaction的时间点。

3141
来自专栏猿人谷

C++容器和算法

容器:某一类型数据的集合。 C++标准顺序容器包括:vector,list,queue 容器初始化 vector<int> t; ...

1639
来自专栏Android 技术栈

性能优化之布局优化记录

做开发时间长了之后,收集后台的bug,发现很多都是OOM(Out Of Memory Killer)。性能优化这时候成为了重点,下面是自己项目中布局优化的记录,...

432
来自专栏Windows Community

New UWP Community Toolkit - DropShadowPanel

概述 UWP Community Toolkit  中有一个为 Frmework Element 提供投影效果的控件 - DropShadowPanel,本篇我...

3547
来自专栏猿人谷

C++容器和算法

容器:某一类型数据的集合。 C++标准顺序容器包括:vector,list,queue 容器初始化 vector<int> t; ...

1737
来自专栏Nian糕的私人厨房

Canvas 让你的屏幕下一场 Hacker 流星雨吧

今天来分享一个很狂拽酷炫吊炸天的特效,其装逼效果不亚于上面那张入侵五角大楼导弹制导系统的概念图(手动滑稽),实现起来很简单,跟着动手一起来吧

612

扫码关注云+社区