NSSet : 集合,同样是保存一组数据,不过集合中的对象没有顺序
通过anyObject访问对象
集合的好处 :可以重用单元格,在缓冲区找一个就拿出来用
NSAaray : 存储有序的对象,对象的顺序是按照添加的先后顺序来决定的
通过下标来访问数组中的对象
图像视图不接受与用户交互的几种方式
1>直接设置不支持与用户交互
self.imageView.userInteractionEnabled=NO;
2>设置透明度<= 0.01的时候,不接受交互
self.imageView.alpha=0.01;
3>隐藏
self.imageView.hidden=YES;
4>利用代码往父视图添加子控件的时候,如果父视图不能与用户交互的话,那么父视图中的所有子控件都不能与用户进行交互
UIButton*btn = [UIButtonbuttonWithType:UIButtonTypeContactAdd];
[self.imageViewaddSubview:btn];
5>如果子视图的范围超出了父视图的范围,是不能进行交互的,即使没有设置clipsToBouds(裁剪子视图超出父视图的那部分视图),也不能与用户交互
注意:第5种,面试会提问
hitTest方法是系统底层专门递归遍历哪一个视图应该对点击事件做出响应的方法
point参数是专门用来判断用户触摸的点是否在视图的有效范围以内
-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event{
returnself;//在这里return self;的话会强行拦截所有的点击测试!只会测试到该视图本身,不包括视图里面的任何子控件
}
//多手势同时执行的方法要遵守这个协议
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer
{
returnYES;
}
在CALayer类中凡是带有Animatable的都有动画
凡是通过CALayer
//启用多点触摸
-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer{
returnYES;
}