1.iOS的空间是程序库中预先构建好的一批对象,空间所扮演的角色是把用户的操作转化成回调,用户通过触摸及操纵空间来与应用程序交互,在控件的继承树里,UIControl类是树根,控件类都是UIView的子类,继承显示与布局的全部属性,UIView的子类添加了一套响应机制,每个控件都能实现消息派发

2.目标-动作模式 指明消息的接收方(目标) 以及所发送的消息(动作),还要指定要发送这些消息的时机(触发条件),由于系统不会再运行期检查它,所以需要注意指定的选择子是否已声明,系统并不强迫目标对象一定要实现方法,但是找不到时候会崩溃,控件响应三类事件:基于触摸的事件,基于值得事件,基于编辑的编辑的事件

3.构建按钮,需要提供按钮所需的全部图片,对于简单的按压按钮,只需要提供一张背景图即可,UIimage类的resizableImageWithCapInsets方法可以缩放图像,contentHorizontalAlignmentCenter设置按钮内容布局,在文本中添加\n强制回车,记得开启多行显示numberOfLines,不然没有效果

4.所有的控件,制作控件时,可以像对待标准的视图那样,调用animateWithDuration实现动画效果  ,通过按钮的titleLabel属性,可以修改标题,可以修改换行模式,setAttributedTitleForState方法可以设置NSAttributedString值,可以添加一些效果

5.滑杆控件,最大最小值或最大最小极的图片,滑块之前,之后,本身的颜色 ,拖动滑块时通过continuous属性来控制是否持续不断发送数值更新通知,setThumbImage:forState:设置不同状态的图像,动态更新必然涉及大量图形运算,但这个很小;优化代码,可以当变化量达到多少再更新

6.分段控制器,选定一个按钮后会一直处于受选状态,重复点击不产生新的事件,momentary布尔属性设为YES则不会记录状态,setTitleTextAttributes:forState:可以添加视觉美化效果,ios6之后的UIkit很多类都支持带属性的字符串(Core Text风格),添加键值对,如NSFontAttriButeName

7.步进wrap属性具备折回属性,自动重复autorepeat,stepValue属性不能设为0或负数,控件手动触发点击事件sendActionForControlEvevts: 把某个事件发送给控件

 ,UIApplication是所有消息的集中派发点 UIControl有begin/continue/end/cancelTrackingWithTouch:withEvent方法来追踪用户操作,自定义星级

8.iOS7引入了运动效果,设备加速计上发生的事件同UIKit控件的值关联起来,创建UIMotionEffect的子类UIInterpolatingMotionEffect并将视图中应该具备运动效果的值设为keyPath,同时可设置最大最小值minimumRelativeValue ,多个效果时,创建UIMotionEffectGroup组动画,添加进去,最后关联要动画的视图 addMotionEffect:

9.检测触摸点是否在视图内CGRectContainsPoint:(view.frame,touchPoint),获取透明度alphaOffset(pt.x,pt.y,view.bouds.size.width),比较该视图的透明度范围Byte *bytes = (Byte *)ribData.bytes; bytes[offset] > 85