为啥我的 UIDynamicAnimator 类继承不能使用 addChildBehavior
Posted
技术标签:
【中文标题】为啥我的 UIDynamicAnimator 类继承不能使用 addChildBehavior【英文标题】:Why my class Inheritance from UIDynamicAnimator can not use addChildBehavior为什么我的 UIDynamicAnimator 类继承不能使用 addChildBehavior 【发布时间】:2015-03-04 14:52:48 【问题描述】:我正在用 Stanford CS193P 学习 ios,在第 8 讲有问题
我从 UIDynamicAnimator 创建了一个名为 DropItBehavior 的类,但我不能使用 UIDynamicAnimator 方法 addChildBehavior,xcode 警告如“No visible @interface for "DropItBehavior" 声明选择器 'addChildBehavior'”
这是.h文件
#import <UIKit/UIKit.h>
@interface DropItBehavior : UIDynamicAnimator
- (void)addItem:(id <UIDynamicItem>)item;
- (void)removeItem:(id <UIDynamicItem>)item;
@end
这是.m文件
#import "DropItBehavior.h"
@interface DropItBehavior()
@property (strong, nonatomic) UIGravityBehavior *gravity;
@property (strong, nonatomic) UICollisionBehavior *collision;
@end
@implementation DropItBehavior
- (instancetype)init
self = [super init];
[self addChildBehavior:self.gravity];//Here is the Xcode warning"No visible @interface for "DropItBehavior" declares the selector 'addChildBehavior"
return self;
- (instancetype)init
self = [super init];
[self addChildBehavior:self.gravity];
return self;
- (UIGravityBehavior *)gravity
if (!_gravity)
_gravity = [[UIGravityBehavior alloc] init];
_gravity.magnitude = 0.9;
return _gravity;
- (UICollisionBehavior *)collision
if (!_collision)
_collision = [[UICollisionBehavior alloc] init];
_collision.translatesReferenceBoundsIntoBoundary = YES;
return _collision;
- (void)addItem:(id <UIDynamicItem>)item
[self.gravity addItem:item];
[self.collision addItem:item];
- (void)removeItem:(id <UIDynamicItem>)item
[self.gravity removeItem:item];
[self.collision removeItem:item];
@end
【问题讨论】:
【参考方案1】:这是因为addChildBehavior
是UIDynamicBehavior
的方法,而不是UIDynamicAnimator
的方法。根据 CS-193P 的讲义,您的 DropIt 类应该从 UIDynamicBehavior
继承:
@interface DropItBehavior : UIDynamicBehavior
【讨论】:
【参考方案2】:查看docs,没有方法-[UIDynamicAnimator addChildBehavior:]
,也没有在你的子类中。
但是,UIDynamicBehavior
可以。
我会仔细检查你是否继承了正确的对象。
【讨论】:
以上是关于为啥我的 UIDynamicAnimator 类继承不能使用 addChildBehavior的主要内容,如果未能解决你的问题,请参考以下文章
UIDynamicAnimator在swift 3中丢球循环
懒惰地用 referenceView 实例化 UIDynamicAnimator - Swift