关闭

UICollisionBehavior-动画效果:碰撞

标签: UICollisionBehavior碰撞UICollisionBehaviorDcollisionMode动画
2376人阅读 评论(0) 收藏 举报
分类:

1。碰撞

          需要确定边界线,使 增加了各动画行为(UIDynamicBehavior)的视图 在执行动画过程中 不能越界

                  translateReferenceBoundsIntoBoundary : YES (将参照视图的边界作为碰撞行为的侦测边界,即在参照视图中所有已增加了collisionBehavior的项在执行动画效果时,均不能越过参照视图的边界) 

                  - (void) addBoundaryWithIdentifier : (id<NSCopying>) identifier  fromPoint : (CGPoint) p1 toPoint : (CGPoint) p2 ;    // 自定义边界

2。collisionMode 碰撞模式

           UICollisionBehaviorModeItems :  between dynamic items

           UICollisionBehaviorModeBoundaries : between  every dynamic item and the boundaries

           UICollisionBehaviorModeEverything : above all , default value

3。<UICollisionBehaviorDelegate>

          myCollision.collisionDelegate = self ;

          - (void) collisionBehavior : (UICollisionBehavior*) paramBehavior  beganContactForItem : (id <UIDynamicItem>) paramItem  withBoundaryIdentifier : (id <NSCopying>) paramIdentifier  atPoint : (CGPoint) paramPoint    // 开始碰到边界时调用

          collisionBehavior : endedContactForItem : withBoundaryIdentifier : atPoint :   


e.g. 

         - (void) collisionBehavior : (UICollisionBehavior*) paramBehavior   beganContactForItem : (id <UIDynamicItem>) paramItem withBoundaryIdentifier : (id <NSCopying>) paramIdentifier  atPoint : (CGPoint) paramPoint  {
                NSString *identifier = (NSString *) paramIdentifier;  //边界标识符
                if ( [ identifier isEqualToString : @"boundaryIdentifier" ] ) {   //与之前定义的边界边识符相比较
                         [ UIView animateWithDuration : 1.0f  animations : ^{
                                  UIView *view = (UIView *) paramItem ;  //每个碰撞的视图
                                  view.backgroundColor = [ UIColor purpleColor ] ;
                                  view.alpha = 0.0f ;  //完全透明
                                  view.transform = CGAffineTransformMakeScale(2.0f, 2.0f) ;
                         } completion : ^(BOOL finished) {   //动画完成后
                                  UIView *view = (UIView *) paramItem;
                                  [ paramBehavior removeItem : paramItem ] ;
                                  [ view removeFromSuperview ] ;
                         } ] ;
                 }
    }    //最终效果:碰到边界时,活动视图会先变为purple色,然后慢慢消失(alpha=0.0)




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:114649次
    • 积分:2220
    • 等级:
    • 排名:第17600名
    • 原创:15篇
    • 转载:0篇
    • 译文:99篇
    • 评论:3条
    最新评论