首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我很难实现UIDynamicBehavior的一个子类

我很难实现UIDynamicBehavior的一个子类
EN

Stack Overflow用户
提问于 2014-01-28 05:03:52
回答 1查看 529关注 0票数 1

我正试图在屏幕上移动一个UIView

UIGravityBehaviorUIPushBehavior都考虑了密度、速度和摩擦力等因素。我试图实现我自己的动态行为忽略了这些物理。

我的UIDynamicBehavior子类和一些基本实现

代码语言:javascript
复制
// 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子类不能工作?

EN

回答 1

Stack Overflow用户

发布于 2014-05-23 07:53:28

我还没有找到明确说明这一点的文档,我也无法猜测其中的根本原因,但我发现,如果我的自定义UIDynamicBehavior类调用它们的操作块,只有在添加了至少有一项的子行为时才会调用它们的操作块。

这很奇怪,我认为我正在经历一个副作用,而不是这样的工作,但这确实是可靠的行动块启动。不过,如果有人能弄清楚原因,我会很感兴趣的。:1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21397249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档