目录
UIView的基本属性
// UIView是否接受events事件,默认为YES
BOOL userInteractionEnabled;
// 用于做标识所用,默认为0
NSInteger tag;
// Core Animation layer有关,在常用方法中再详细讲解
CALayer *layer;
// UIView在父视图中的位置
CGRect frame;
// UIView相对自己的位置
CGRect bounds;
// UIView的中心点. animatable
CGPoint center;
// 线性代数里面讲的矩阵变换,这个是恒等变换,一般用来旋转,缩放
CGAffineTransform transform;
// 修改contentScaleFactor可以让UIView的渲染精度提高,这样即
使在CGAffineTransform放大之后仍然能保持锐利。
CGFloat contentScaleFactor;
// 是否允许多点触摸
BOOL multipleTouchEnabled;
// default is NO
BOOL exclusiveTouch;
// UIView的背影颜色
UIColor backgroundColor;
// UIView是否隐藏
BOOL hidden;
// 为0时完全透明,为1时完全不透明。
CGFloat alpha;
//在类的层次结构中,如果clipsTobounds设为YES,超出superView的部分subview就不会显示,否则会做显示, 默认情况下是NO。
BOOL clipsToBounds;
//这是一个优化属性,如果该值为YES, 那么绘图在绘制该视图的时候把整个视图当作不透明对待。这样,绘图系统在执行绘图过程中会优化一些操作并提升系统性能;如果是设置为NO, 绘图系统将其和其他内容平等对待,不去做优化操作。为了性能方面的考量,默认被置为YES(意味着‘优化’)。
BOOL opaque;
UIView *superview;
// 父视图
NSArray *subviews;
// 子视图
注:frame
和center
都是相对于父视图的,bounds
是相对于自身的。当view完全透明和隐藏时不能响应事件。
opaque 和 alpha是有关系的系的。 一个不透明视图需要整个边界里面的内容都是不透明的。基于这个原因,opaque设置为YES,要求对应的alpha必须为1.0。如果一个UIView实例opaque被设置为YES, 而同时它又没有完全填充它的边界(bounds),或者它包含了整个或部分的透明的内容视图,那么将会导致未知的结果。 因此,如果视图部分或全部支持透明,那么你必须把opaque这个值设置为No。
几何方法类
// hitTest主要用途是用来寻找那个视图是被触摸了
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
// 如果我们不想让某个视图响应事件,让此方法返回NO就行了。默认为YES
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
举个例子,建立一个TestView里面重载hitTest和pointInside方法:
然后在TestView中增加一个子视图TestSecondView也重载这两个方法
这里注意[super hitTest:point withEvent:event];
必须要包括,否则hitTest
无法调用父类的方法,这样就没法 使用PointInside:withEvent:
进行判断,那么就没法进行子视图的遍历。当去掉这个语句的时候,触摸事件就不可能进到子视图中了,除非你在方法中直接返回子视图的对象。这样你在调试的过程中就会发现,每次你点击一个view都会先进入到这个view的父视图中的hitTest方法,然后 调用super的hitTest方法之后就会查找pointInside是否返回YES如果是,则就把消息传递个子视图处理,子视图用同样的方法递归查找 自己的子视图。所以从这里调试分析看,hitTest方法这种递归调用的方式就一目了然了。
控制级别类
渲染类
动画类
手势类
基于布局的约束core方法(iOS 6.0)
基于约束的兼容性(iOS 6.0)
层次布局的约束(iOS 6.0)
设备大小布局约束(iOS 6.0)
状态恢复(iOS 6.0)
快照 (iOS7.0)