GestureRecognizers

一、@property(nonatomic,copy) NSArray *gestureRecognizers NS_AVAILABLE_IOS(3_2); 手势识别器
UIKit 中UIGestureRecognizer类的子类系列如下:
UITapGestureRecognizer – “轻击”手势。可以配置为“单击”和“连击”的识别。
UIPinchGestureRecognizer –“捏合”手势。该手势通常用于缩放视图或改变可视组件的大小。
UIPanGestureRecognizer – “平移”手势。识别拖拽或移动动作。
UISwipeGestureRecognizer – “轻扫”手势。当用户从屏幕上划过时识别为该手势。可以指定该动作的方向(上、下、左、右)。
UIRotationGestureRecognizer – “转动”手势。用户两指在屏幕上做相对环形运动。
UILongPressGestureRecognizer – “长按”手势。使用1指或多指触摸屏幕并保持一定时间。

二、- (void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer NS_AVAILABLE_IOS(3_2); 绑定手势到视图

UITapGestureRecognizer * demoGesture = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerTwoTaps)] autorelease];
demoGesture.numberOfTapsRequired = 2; //二个手势
demoGesture.numberOfTouchesRequired = 1; //一个手指
[insertDemoOne addGestureRecognizer:demoGesture];

三、- (void)removeGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer NS_AVAILABLE_IOS(3_2); 从视图中分离手势
[insertDemoOne removeGestureRecognizer:demoGesture];

四、- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer NS_AVAILABLE_IOS(6_0); 手势识别处理方式在gesture recognizer视图转出《UIGestureRecognizerStatePossible》状态时调用,
如果返回NO,则转换到《UIGestureRecognizerStateFailed》;
如果返回YES,则继续识别触摸序列.(默认情况下为YES)。
[insertDemoOne gestureRecognizerShouldBegin:demoGesture];

五、- (NSArray *)constraints NS_AVAILABLE_IOS(6_0); 视图布局约束
约束规则如下:

对于有层次关系的两个view之间的约束关系,添加到层次较高的父级view上。

对于两个不同层级view之间的约束关系,添加到他们最近的共同父级view上。

对于两个同层级view之间的约束关系,添加到他们的父级view上。

六、- (void)addConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); //视图布局上添加一个约束

七、- (void)addConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); //视图布局上添加多个约束

八、- (void)removeConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); 移除视图布局上的一个约束

九、- (void)removeConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); 移除视图布局上的多个约束

十、- (void)updateConstraintsIfNeeded NS_AVAILABLE_IOS(6_0); //调用新的视图布局自动触发,更新视图布局上的约束

十一、- (void)updateConstraints NS_AVAILABLE_IOS(6_0); // 更新自定义视图布局约束

十二、- (BOOL)needsUpdateConstraints NS_AVAILABLE_IOS(6_0); 判断视图布局是否需要更新约束

13、- (void)setNeedsUpdateConstraints NS_AVAILABLE_IOS(6_0); 设置视图布局是否需要更新约束

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
UIButton *acceptButton = [UIButton buttonWithType:UIButtonTypeCustom];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(cancelButton,acceptButton);
NSArray *demoConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"[cancelButton(72)]-12-[acceptButton(50)]" options:0 metrics:nil views:viewsDictionary]; //取消按钮宽72point,accept按钮宽50point,它们之间间距12point
NSLog(@"%@", demoConstraint);
[oneViewDemo updateConstraintsIfNeeded];
[oneViewDemo updateConstraints];
[oneViewDemo needsUpdateConstraints];
[oneViewDemo setNeedsUpdateConstraints];
[oneViewDemo  addConstraints: demoConstraint];
[oneViewDemo  addConstraint: [demoConstraint objectAtIndex:0]];
[oneViewDemo removeConstraint:[demoConstraint objectAtIndex:1]];
[oneViewDemo removeConstraints:demoConstraint];

时间: 2024-07-31 05:18:54

GestureRecognizers的相关文章

PSCollectionView瀑布流实现

[-] 一基本原理 二具体实现 相关数据结构 视图更新方式 relayoutViews方法 removeAndAddCellsIfNecessary方法 select方法 重用数据块视图机制 三使用方法 四其他瀑布流实现 PSCollectionView是一个实现较简洁的仿Pinterest瀑布流iOS版实现,使用UIScrollView做容器,每列列宽固定,高度可变,使用方式类似UITableView.其效果如图: 一.基本原理 其基本实现原理为: 列数固定,根据列数每列存储一个当前列的高度值

在iOS中获取UIView的所有层级结构 相关

在iOS中获取UIView的所有层级结构 应用场景 在实际 iOS 开发中,很多时候都需要知道某个 UI 控件中包含哪些子控件,并且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便我们完成复杂的 UI 布局,下面的代码就能很方便的获取某个 UI 控件的所有的层级结构,我们可以用它计算,然后把结果写入到本地磁盘,导出成XML文件,这样我们就可以很直观的看出它内部的细节. /** * 返回传入veiw的所有层级结构 * * @param view 需要获取层级结构的view *

iOS 手势及触摸

转自:http://justsee.iteye.com/blog/1885538 一.响应链 在IOS开发中会遇到各种操作事件,通过程序可以对这些事件做出响应. 首先,当发生事件响应时,必须知道由谁来响应事件.在IOS中,由响应者链来对事件进行响应,所有事件响应的类都是UIResponder的子类, 响应者链是一个由不同对象组成的层次结构,其中的每个对象将依次获得响应事件消息的机会.当发生事件时,事件首先被发送给第一响应者,第一响应者往往是事 件发生的视图,也就是用户触摸屏幕的地方.事件将沿着响

iOS开发-KVO的奥秘

iOS开发-KVO的奥秘 字数2933 阅读3842 评论28 喜欢57 序言 在iOS开发中,苹果提供了许多机制给我们进行回调.KVO(key-value-observing)是一种十分有趣的回调机制,在某个对象注册监听者后,在被监听的对象发生改变时,对象会发送一个通知给监听者,以便监听者执行回调操作.最常见的KVO运用是监听scrollView的contentOffset属性,来完成用户滚动时动态改变某些控件的属性实现效果,包括渐变导航栏.下拉刷新控件等效果. 渐变导航栏 使用 KVO的使用

UITableView Group类型扁平化适配iOS6.0

适配方案 tableView // 在ViewDidLoad里调用该方法 - (void)unifyTableView:(UITableView *)tableView { //iOS7以后将分隔线拉至边线 if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) { [tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([self.tableView responds

iOS 开发者旅途中的指南针 - LLDB 调试技术

文章转载于:iOS 开发者旅途中的指南针 - LLDB 调试技术 今天给大家介绍的内容,无关乎任何功能性开发技术,但又对开发的效率影响至深,这就是调试技术. 何为调试呢,比如我们用 print 函数在指定位置进行输出,来定位某些节点的变量内的取值: 12345 let result = parseJSON("[1,2,3]");print(result); result = parseJSON("error");print(result);4 相信我们大家看到类似这

iOS手势操作,拖动,轻击,捏合,旋转,长按,自定义(http://www.cnblogs.com/huangjianwu/p/4675648.html)

1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作. UIPanGestureRecognizer(拖动) UIPinchGestureRecognizer(捏合) UIRotationGestureRecognizer(旋转) UITapGestureRecognizer(点按) UILo

UICollectionView 中的警告提示

通过xib创建的UICollectionViewCell,在xib中设置了cell size的宽和高,如果之后使用 flow.itemSize = CGSizeMake(cellWidth, cellHeight);动态修改了cell size,并且cell size的小于itemSize,会报一下错误,把xib的view尺寸拉大,并改变cell size的大小,就可以解决这个问题. the item height must be less than the height of the UICo

iOS:触摸控件UITouch、事件类UIEvent

UITouch:触摸控件类   UIEvent:事件类 ??????UITouch的介绍?????? 一.触摸状态类型枚举 typedef NS_ENUM(NSInteger, UITouchPhase) { UITouchPhaseBegan,             // 开始触摸 UITouchPhaseMoved,             // 触摸移动 UITouchPhaseStationary,       // 触摸没有移动 UITouchPhaseEnded,