Почему я не могу делать какие-либо анимации CABasicAnimation или Keyframe? - PullRequest
2 голосов
/ 21 июля 2009

По какой-то причине Xcode сообщает мне, что не находит символы, как только я использую что-то вроде kCAFillModeForwards. Должна быть библиотека или класс, который я должен включить ... но какой? Нормальный материал Core Animation работает нормально, как [myView beginAnimations ...]. Какой прием, чтобы заставить работать более сложные анимационные материалы?

Я включил в .h файл:

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface TestClass : UIView {

}
// ...

Я запускаю этот код:

- (void)testAnimation {
    CABasicAnimation *fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
    [fadeInAnimation setToValue:[NSNumber numberWithFloat:1.0]];
    fadeInAnimation.fillMode = kCAFillModeForwards;
    fadeInAnimation.removedOnCompletion = NO;
    // other stuff deleted to limit error possibilities...should at least compile
}

Это происходит, когда я строю (много раз чистил), 2 ошибки:

    cd "/Users/thanks/Desktop/Thanks/iPhone Development/TestApp"
    setenv MACOSX_DEPLOYMENT_TARGET 10.5
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.0 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk "-L/Users/thanks/Desktop/Thanks/iPhone Development/TestApp/build/Debug-iphonesimulator" "-F/Users/thanks/Desktop/Thanks/iPhone Development/TestApp/build/Debug-iphonesimulator" -filelist "/Users/thanks/Desktop/Thanks/iPhone Development/TestApp/build/TestApp.build/Debug-iphonesimulator/TestApp.build/Objects-normal/i386/TestApp.LinkFileList" -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework CoreGraphics -o "/Users/thanks/Desktop/Thanks/iPhone Development/TestApp/build/Debug-iphonesimulator/TestApp.app/TestApp"
Undefined symbols:
  ".objc_class_name_CABasicAnimation", referenced from:
      literal-pointer@__OBJC@__cls_refs@CABasicAnimation in TestClassTestClass.o
  "_kCAFillModeForwards", referenced from:
      _kCAFillModeForwards$non_lazy_ptr in TestClass.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
      ".objc_class_name_CABasicAnimation", referenced from:
          literal-pointer@__OBJC@__cls_refs@CABasicAnimation in TestClass.o
      "_kCAFillModeForwards", referenced from:
          _kCAFillModeForwards$non_lazy_ptr in TestClass.o
    ld: symbol(s) not found
    collect2: ld returned 1 exit status

Там написано Неопределенные символы:

Должен ли я включить некоторые рамки?

Я уже включил:

CoreGraphics.framework Foundation.framework UIKit.framework

Когда я удаляю весь код, но импортирую QuartzCore / QuartzCore.h, я не получаю никакой ошибки. Бьюсь об заклад, что импорт работает, но не уверен.

решаемые

Я пропустил включение платформы QuartzCore !!

Ответы [ 2 ]

7 голосов
/ 18 августа 2011

Возможно, вы не включили платформу Quartz в свой проект.

Для этого выберите цель приложения, перейдите на вкладку Этапы сборки , а затем в Связать двоичные файлы с библиотеками и добавьте QuartzCore.framework .

7 голосов
/ 21 июля 2009

Вы импортируете кварц в заголовок?

#import <QuartzCore/QuartzCore.h>

QuartzCore включает заголовки CAAnimation

...