首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的UIImage放在Delegate函数中时不会掉到屏幕的底部

我的UIImage放在Delegate函数中时不会掉到屏幕的底部
EN

Stack Overflow用户
提问于 2014-05-10 19:38:59
回答 1查看 133关注 0票数 0

我的代码将一个UIImage放到屏幕的底部。但是当我在isMyUIViewControllerDelegateTriggered.中放置相同的代码时,它就不起作用了这是同一条线,不是吗??

MyUIViewController.m

代码语言:javascript
复制
@interface MyUIViewController () <UIDynamicAnimatorDelegate>

@property (strong, nonatomic) UIDynamicAnimator *animator;
@property (strong, nonatomic) DropitBehavior *dropitBehavior;
@property (strong, nonatomic) IBOutlet UIView *jobLoadView;

@end

@synthesize someUIImage;

id refToSelf;  /* Tried this to have a ref to the UIView, but doesn't work. */
static DropitBehavior * dropit;

- (void)viewDidLoad
{
    refToSelf = self;
    dropit = [[DropitBehavior alloc] init];

    /* Placed inhere, this code works!
    DropitBehavior * dropit = [refToSelf dropitBehavior];
    [dropit addItem:someUIImage]; */

    startupManager = [[StartupManager alloc] init];
    [startupManager setDelegate:refToSelf];
    [startupManager start];
}

- (DropitBehavior *)dropitBehavior
{
    if (!_dropitBehavior) {
        _dropitBehavior = [[DropitBehavior alloc] init];
        [self.animator addBehavior:_dropitBehavior];
    }
    return _dropitBehavior;
}

- (UIDynamicAnimator *)animator
{
    if (!_animator) {
        _animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.jobLoadView];
        _animator.delegate = self;
    }
    return _animator;
}


-(void)isStartupManagerDelegateTriggered:(NSString *) errorcode {        
    /* The startup manager code triggers 5 time, so I can make a loading effect. */

    /* Doesn't work when I place the code inhere. */
    dropit = [refToSelf dropitBehavior];

    if ([dropit isKindOfClass:[DropitBehavior class]]) {
       NSLog(@"is kind of class drop it ");
       [dropit addItem:someUIImage];
    }
}

DropitBehavior.m

代码语言:javascript
复制
@interface DropitBehavior()
@property (strong, nonatomic) UIGravityBehavior *gravity;
@property (strong, nonatomic) UICollisionBehavior *collider;
@end

@implementation DropitBehavior

/* Singleton */
static DropitBehavior *sharedSingleton;

+ (void)initialize {
    static BOOL initialized = NO;
    if(!initialized)
    {
        initialized = YES;
        sharedSingleton = [[DropitBehavior alloc] init];
    }
}

- (UIGravityBehavior *)gravity
{
    if (!_gravity) {
        _gravity = [[UIGravityBehavior alloc] init];
        _gravity.magnitude = 0.9;
    }
    return _gravity;
}

- (UICollisionBehavior *)collider
{
    if (!_collider) {
        _collider = [[UICollisionBehavior alloc] init];
        _collider.translatesReferenceBoundsIntoBoundary = YES;
    }
    return _collider;
}

- (void)addItem:(id <UIDynamicItem>)item
{
    [self.gravity addItem:item];
    [self.collider addItem:item];
}

- (instancetype)init
{
    self = [super init];
    [self addChildBehavior:self.gravity];
    [self addChildBehavior:self.collider];
    return self;
}

@end

StartupManager.m

代码语言:javascript
复制
@implementation StartupManager

JSONParser * jsonParser;
HTTPConnection * httpConnection;
static StartupManager *sharedSingleton;
@synthesize delegate;

+ (void)initialize {

    static BOOL initialized = NO;
    if(!initialized) {
        initialized = YES;
        sharedSingleton = [[StartupManager alloc] init];
        jsonParser = [[JSONParser alloc] init];
        httpConnection = [[HTTPConnection alloc] init];
    }
}

- (void) doingSomeStuff {

        [httpConnection setDelegate:self];
        [httpConnection postRequestToSomeServer:@"some.instance.inthe.cloud";
}

-(void)isHTTPConnectionDelegateTriggered:(NSData *)jsonPost {

    [jsonParser setDelegate:self];
    [jsonParser parseJSON:jsonPost];
}

-(void)isJSONParserDelegateTriggered:(NSString *) message {

    */ this gets called periodically and that has to do a loading screen animation. /*
    [delegate isStartupManagerDelegateTriggered:message];
}

StartupManager.h

代码语言:javascript
复制
@class StartupManager;

@protocol StartupManagerDelegate

@required
    -(void)isStartupManagerDelegateTriggered:(NSString *) errorcode;
@end

@interface StartupManager : NSObject <JSONParserDelegate, HTTPConnectionDelegate>

@property (nonatomic, assign) id<StartupManagerDelegate>  delegate;

- (void) doingSomeStuff;

有人能为我指明正确的方向吗?否则我得去问爷爷。

EN

回答 1

Stack Overflow用户

发布于 2014-05-10 20:22:01

我想你可能误解了UIDynamicAnimatorDelegate协议。它不会为你启动动画,它只是让你知道动画状态已经改变了。

因此,通常不会从委托方法启动动画。在任何情况下,您提交的代码都不会实现任何委托方法。使用发布的代码启动动画的唯一方法是显式调用isMyUIViewControllerDelegateTriggered

你想什么时候开始?viewDidLoad太早了。viewDidAppear通常是您期望用户看到的东西的最早合理时间。

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

https://stackoverflow.com/questions/23585486

复制
相关文章

相似问题

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