UIView
을 화면 전체로 이동하려고합니다.UIDynamicBehavior의 서브 클래스 구현에 애 쓰고 있습니다.
UIGravityBehavior
및 UIPushBehavior
은 모두 밀도, 속도 및 마찰과 같은 것을 고려합니다. 나는 그 물리학을 무시하는 내 자신의 동적 행동을 구현하려고했습니다.
내 UIDynamicBehavior
서브 클래스 I 메모리에서이 작업을 다시 시도하고
// MYDynamicBehavior.h
@interface MYDynamicBehavior : UIDynamicBehavior
- (void)addItem:(id<UIDynamicItem>)item;
- (void)removeItem:(id<UIDynamicItem>)item;
@end
// MYDynamicBehavior.m
@interface MYDynamicBehavior()
@property (strong, nonatomic) NSMutableArray *items;
@end
@implementation MYDynamicBehavior
- (void (^)(void))action
{
__weak MYDynamicBehavior *weakSelf = self;
for (UIView *item in weakSelf.items)
item.center = CGPointMake(item.center.x + 10.0, item.center.y);
}
- (instancetype)init
{
if (self=[super init]) {
__weak MYDynamicBehavior *weakSelf = self;
weakSelf.action = ^{
for (UIView *item in weakSelf.items)
item.center = CGPointMake(item.center.x + 10.0, item.center.y);
};
}
return self;
}
- (void)addItem:(id<UIDynamicItem>)item
{
[self.items addObject:item];
}
@end
// ViewController.m
// #includes
@interface ViewController()
@property (strong, nonatomic) UIDynamicAnimator *ani;
@property (strong, nonatomic) UIView *kin;
@property (strong, nonatomic) MYDynamicBehavior *skywalk;
@end
@implementation ViewController
…
- (void)viewDidLoad
{
[super viewDidLoad];
self.ani = [[UIDynamicAnimator alloc] init];
self.kin = // some view
self.skywalk = [[MYDynamicBehavior alloc] init];
[self.ani addBehavior:self.skywalk];
[self.skywalk addItem:kin];
}
@end
몇 가지 기본적인 구현, 나는 기초가 여기 어쨌든
생각, 그것은 문서에서 내 인상의 그 액션 속성은 내 애니메이션을 구현해야하는 곳입니다. 그러나 나는 흑인의 행동이 부름받은 것처럼 보이지 않는다.
This 내가 해결책을 찾은 것 중 가장 가까운 것이지만 아직이 문제를 해결하지 못했습니다.
무엇이 누락 되었습니까? 내 맞춤 UIDynamicBehavior
서브 클래스가 작동하지 않는 이유는 무엇입니까?