كيف يمكنني تحريك خاصية uibutton Alpha مع Monotouch
-
16-09-2019 - |
سؤال
لدي uibutton بسيط مع خاصية ألفا ترغب في تحريكها من 1.0F إلى 0.0F، ثم العودة إلى 1.0F. هذا يستجيب أساسا للمس.
أيضا، هل هناك أي شيء خاص أحتاج إلى القيام به إذا كان الروتين الذي أدعو إليه من ليس في الخيط الرئيسي (استدعاء مندوب ASYNC على Threadpool)؟
يجب أن أستخدم canimation؟
شكرًا!
المحلول
ما لم يكن شخص ما أنابيب مع طريقة أحادية للقيام بذلك، أقول استخدام:
- (void) pulseButton {
button.alpha = 0.0;
[UIView beginAnimations:nil context:button]; {
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(makeVisibleAgain:finished:context:)];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration:0.50];
button.alpha = 0.0;
} [UIView commitAnimations];
}
- (void)makeVisibleAgain:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
UIButton *button = ((UIButton *) context);
[UIView beginAnimations:nil context:nil]; {
[UIView setAnimationDelegate:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.5];
button.alpha = 1.0;
} [UIView commitAnimations];
}
نصائح أخرى
شكرا على وظيفة كود iPhone.
الجواب الثاني يستخدم متغير عالمي ويتخطى المعلمات لاستعداد الاتصال. هنا هو ما أحسب اليوم بناء على الإجابة الأولى.
private void BeginPulse (Button button)
{
UIView.BeginAnimations (button+"fadeIn", button.Handle);
UIView.SetAnimationDelegate (this);
UIView.SetAnimationDidStopSelector (new MonoTouch.ObjCRuntime.Selector ("makeVisibleAgain:finished:context:"));
UIView.SetAnimationCurve(UIViewAnimationCurve.EaseOut);
UIView.SetAnimationDuration (0.5);
button.Alpha = 0.25f;
UIView.CommitAnimations ();
}
[Export ("makeVisibleAgain:finished:context:")]
private void EndPulse (NSString animationId, NSNumber finished, UIButton button)
{
UIView.BeginAnimations (null, System.IntPtr.Zero);
UIView.SetAnimationDelegate (this);
UIView.SetAnimationCurve (UIViewAnimationCurve.EaseIn);
UIView.SetAnimationDuration (0.5);
button.Alpha = 1;
UIView.CommitAnimations();
}
هذا بسيط جدا:
UIView button;
public void fadeButtonInAndOut()
{
UIView.BeginAnimations("fadeOut");
UIView.SetAnimationDelegate(this);
UIView.SetAnimationDidStopSelector(new Selector("fadeOutDidFinish"));
UIView.SetAnimationDuration(0.5f);
button.Alpha = 0.0f;
UIView.CommitAnimations();
}
[Export("fadeOutDidFinish")]
public void FadeOutDidFinish()
{
UIView.BeginAnimations("fadeIn");
UIView.SetAnimationDuration(0.5f);
button.Alpha = 1.0f;
UIView.CommitAnimations();
}
لا تنتمي إلى StackOverflow