2016-05-04 37 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