سؤال

أقوم بإنشاء NSView ، والتي تنشئ في طريقة Drawrect وتضيف NSImageView باعتبارها عرضًا فرعيًا.

أرغب في تدوير NSIMAGEVIEW (Circleview) ، أو [Self]. لذلك بطريقة أخرى ، أحاول القيام بذلك:

-(void)startAnimation {
CABasicAnimation* spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
spinAnimation.toValue = [NSNumber numberWithFloat:5*2*M_PI];
spinAnimation.duration = 2;
[circleView.layer addAnimation:spinAnimation forKey:@"spinAnimation"];
}

ومع ذلك ، فإن هذا الرمز لا يفعل أي شيء عندما تسمى الطريقة. أفعل شيئا خاطئا؟ حاولت Self.layer و Circleview.layer ولكن لا يبدو أنه يعمل ...

هل كانت مفيدة؟

المحلول

أنت فقط تحدد الرسوم المتحركة ، فأنت لا تتصل فعليًا بمجموعة الرسوم المتحركة التي تؤدي الرسوم المتحركة.

تحتاج إلى استدعاء كتلة محددة بين:

+ beginAnimations:context:
+ commitAnimations

لتشغيل الرسوم المتحركة فعلا.

EDIT01: سيئتي. لم أهتم بالعلامات وأضفت إجابة واجهة برمجة تطبيقات iPhone.

نصائح أخرى

الإجابة على هذه المشكلة هي أن NSVIEW/NSIMAGEVIEW لم يكن لديه طبقة دعم للقيام بالرسوم المتحركة.

قمت بتعيين هذا مع:

[NSView setWantsLayer:YES];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top