我有一个从UIImageView
继承的类。然后,我有NSArray
,它包含A类的对象,其中包含一些图片。然后,我只想添加到主视图(self.view addSubview: "object of Aclass"
)并删除其中的一些。我会继续这样做一段时间。这是问题。当我像添加时一样用一些UIImageView
进行“添加”和“删除” Animation
(一个类对象)时,UIImageView
会从小到其原始大小,而当我删除时,它会从其原始大小变为较小
-(void)displayAClassObject: {
[self.view addSubview: AClassObject];
AClassObject.transform = CGAffineTransformMakeScale(0.3, 0.3);
[UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ AClassObject.transform = CGAffineTransformIdentity; } completion:^(BOOL finished) { }];
}
然后,某些函数将生成随机数字,以删除在主视图中添加的
AClassObject
。-(void)displayOffAClassObject {
[UIView animateWithDuration:0.1 animations:^{AClassObject.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.1, 0.1);} completion:^(BOOL finished){[AClassObject removeFromSuperview]; }];
[AClassObject removeFromSuperview];
}
当我再次将删除的
AClassObject
添加到主view
时,我将其设置为不同的框架,以将其放置在Main视图中的不同位置,但是我不更改其大小。这个过程每秒都在进行,但是当我仅添加或删除时,它工作正常。
AClassObject
从小到其原始大小,然后从其原始大小变为小大小。但是当我像[self displayOffAClassObject]; [self displayAClassObject];
一样同时做这两个时UIImageView
(AClassObject
)变得很大,即使某些图像不在屏幕上。谁能告诉我这是怎么回事?或有任何解决建议? 最佳答案
当您进行变换(尤其是比例变换)时,.frame
变为无效。在设置框架前先设置AClassObject.transform = CGAffineTransformIdentity
。如果要在.transform
不是标识时设置其位置,请改为设置.center
。
引用自UIView
文档:
警告
如果此属性(.transform)不是标识转换,则frame属性的值未定义,因此应忽略。
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/transform