ฉันได้ค้นหาสิ่ง SO มากมายและในข้อมูลอ้างอิงของ Apple แต่ก็ยังไม่สามารถจัดการปัญหาของฉันได้
สิ่งที่ฉันมี:
- หน้าจอที่มี 2
UIImageView
วินาทีและ 2UIButton
วินาทีเชื่อมต่ออยู่ - แอนิเมชั่น 2 ประเภท:
- ปรับขนาดขึ้นแล้วลงของแต่ละภาพทีละภาพเพียงครั้งเดียว
viewDidLoad
- เมื่อกดปุ่ม (ปุ่มแบบกำหนดเองที่ซ่อนอยู่ 'ด้านใน' ของแต่ละปุ่ม
UIImageView
) จะทำให้เกิดภาพเคลื่อนไหวของภาพเคลื่อนไหวที่เหมาะสมUIImageView
เพียงปุ่มเดียวไม่ใช่ทั้งสองอย่าง (ปรับขนาดขึ้นแล้วลงด้วย) - ขณะที่ฉันเขียนสำหรับ iOS4 + ฉันได้รับคำสั่งให้ใช้แอนิเมชั่นแบบบล็อก!
- ปรับขนาดขึ้นแล้วลงของแต่ละภาพทีละภาพเพียงครั้งเดียว
สิ่งที่ฉันต้องการ:
ฉันจะยกเลิกภาพเคลื่อนไหวที่กำลังทำงานอยู่ได้อย่างไร ฉันสามารถยกเลิกได้แล้ว แต่สุดท้าย ... : /
นี่คือข้อมูลโค้ดของฉัน:
[UIImageView animateWithDuration:2.0
delay:0.1
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
isAnimating = YES;
self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 2.0, 2.0);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 0.5, 0.5);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 2.0, 2.0);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 0.5, 0.5);
}
completion:^(BOOL finished){
if (!finished) return;
//block letter buttons
[self.bigLetterButton setUserInteractionEnabled:YES];
[self.smallLetterButton setUserInteractionEnabled:YES];
//NSLog(@"vieDidLoad animations finished");
}];
}];
}];
}];
ยังไงก็ตามการsmallLetter
UIImageView
ทำงานไม่ถูกต้องเนื่องจากเมื่อกด (ปุ่มผ่าน) bigLetter
กำลังยกเลิกภาพเคลื่อนไหวอย่างถูกต้อง ...
แก้ไข:
ผมเคยใช้วิธีนี้ แต่ยังคงมีปัญหากับการปรับลงsmallLetter
UIImageView
- ไม่ยกเลิกเลย ...
วิธีการแก้ปัญหา
แก้ไข 2:ฉันได้เพิ่มสิ่งนี้ไว้ที่จุดเริ่มต้นของวิธีการถัดไป / ก่อนหน้า:
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
ปัญหายังคงอยู่ ... : / ไม่รู้วิธีขัดจังหวะภาพเคลื่อนไหวสุดท้ายสำหรับตัวอักษรในห่วงโซ่ภาพเคลื่อนไหว