2015-06-28 3 views
-1

Я следую учебнику Objective-C о том, как оживить меню с помощью UIKit Dynamics, и у меня возникли проблемы с переводом следующего кода с Objective-C на Swift.Перевод @interface UIView из Objective-C в Swift

animator.h

@interface Animator : NSObject 

+ (instancetype)animatorWithScreen:(UIScreen *)screen; 

- (void)addAnimation:(id<Animation>)animatable; 
- (void)removeAnimation:(id<Animation>)animatable; 

@end 

@interface UIView (AnimatorAdditions) 

- (Animator *)animator; 

@end 

animator.m

@implementation Animator 
{ 
} 

+ (instancetype)animatorWithScreen:(UIScreen *)screen 
{ 
    if (!screen) {  
     screen = [UIScreen mainScreen]; 
    } 
    Animator *driver = objc_getAssociatedObject(screen, &ScreenAnimationDriverKey); 
    if (!driver) { 
     driver = [[self alloc] initWithScreen:screen]; 
     objc_setAssociatedObject(screen, &ScreenAnimationDriverKey, driver, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 
    } 
    return driver; 
} 

@implementation UIView (AnimatorAdditions) 

- (Animator *)animator 
{ 
    return [Animator animatorWithScreen:self.window.screen]; 
} 

@end 

Я был в состоянии получить все остальное работает, но я не уверен, как получить UIView, чтобы иметь свойство аниматора с помощью Swift а также как правильно перевести:

objc_setAssociatedObject(screen, &ScreenAnimationDriverKey, driver, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 
+1

относительно objc_setAssociatedObject: http://stackoverflow.com/questions/24133058/is-there-a-way-to-set-associated-objects-in-swift - относительно аниматора: https://developer.apple. com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html – luk2302

+0

Удивительно, я не уверен, почему я так сильно занижен, так как мне просто нужны некоторые рекомендации. Если бы вы могли добавить, что в качестве ответа я поставил его как правильный. –

ответ

1

Уже существует дискуссия о objc_setAssociatedObject для быстрого: "Is there a way to set associated objects in Swift?".

Что вы пытаетесь сделать с помощью Animator, называется расширением . Это, конечно, доступно и для быстрого - взгляните на the docs на то, как создать его самостоятельно.

 Смежные вопросы

  • Нет связанных вопросов^_^