2016-05-04 36 views
2

我有一个继承自UIImageView的类。然后我有NSArray包含A类的对象包含一些图片。然后我只想添加到主视图(self.view addSubview: "object of Aclass")并删除其中的一些。我会继续这样做一段时间。这是问题。当我做“加”,并与一些Animation“删除”的UIImageView(A类对象),就像当我添加的UIImageView从小变到原来的大小,当我删除,它从原来的大小会更小带动画的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,我用不同的帧设置它放置在不同的地方在主视图,但我不改变它的大小。

这个过程持续每秒,但当我只添加或删除,它工作正常。 AClassObject从小到原始大小,然后从原来的大小变小。但是当我在同一时间做这两个像[self displayOffAClassObject]; [self displayAClassObject];

UIImageViewAClassObject)变得非常大,甚至一些图像熄灭在屏幕上。谁能告诉我什么是错?或任何建议来解决它?

回答

1

当您进行转换(特别是缩放转换)时,.frame将无效。设置其框架之前设置AClassObject.transform = CGAffineTransformIdentity。如果您想在.transform不是身份时设置其位置,请改为设置.center

UIView文档引:

警告

如果此属性(.transform)不是恒等变换,框架属性的值是未定义的,并因此应该被忽略。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/transform