CS193P-2013 Lecture 8 协议、block、动

2016-05-09  本文已影响32人  _Patrik_

协议

id <Proctocol> obj

只是编译器中的语法,与 NSString * 等标识没有区别

编译时仍然是 id 类型,只是给编译器类型检查上的方便


Block

Block 是一段代码快,可以嵌入其他代码中

可以作为参数传递,也可以放在 NSArray 里

在其他语言中常被称为闭包


动画

- dynamic animation 动力动画

定义一些物理效果,应用于要添加动画效果的视图,然后会被立刻执行

//创建一个 UIDynamicAnimator 动力动画者
UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:aView];
//aView 必须是视图的顶级视图(Top)

//创建并添加 UIDynamicBehaviors(重力、碰撞等)到动力动画者中
UIGravityBehavior *gravity = [[UIGravityBehavior alloc] init];
[animator addBehavior:gravity];
UICollisionBehavior *collider = [[UICollisionBehavior alloc] init];
[animator addBehavior:collider];

//创建并添加 UIDynamicItems (通常是 UIView) 到动力行为中
id <UIDynamicItem> item1 = ...;
id <UIDynamicItem> item2 = ...;
[gravity addItem:item1];
[collider addItem:item1];
[gravity addItem:item2];

@protocol UIDynamicItem
@property (readonly) CGRect bounds;
@property (readwrite) CGPoint center;
@property (readwrite) CGAffineTransform transform;
@end
  
//如果 animator 在执行的时候需要修改 center 或 transform,需要调用 UIDynamicAnimator 的下述方法
- (void)updateItemUsingCurrentState: (id <UIDynamicItem) item;
上一篇 下一篇

猜你喜欢

热点阅读