2011-07-05 145 views
0

這裏經過縮放一個UIImageView是我的代碼:問題與碰撞

- (void) yo { 
if(CGRectIntersectsRect(imageView.frame,centre.frame)){ 

    [imageView removeFromSuperview]; 
self.scale=self.scale+1; 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0f]; 
centre.transform = CGAffineTransformScale(centre.transform, scale, scale); 
[UIView commitAnimations];  
} 

- (void)viewDidLoad { 
[super viewDidLoad]; 


[NSTimer scheduledTimerWithTimeInterval:0.01 target:self 
selector:@selector(collision) userInfo:nil repeats:YES]; 

scale=1; 

}

我想+1「中心」將其與「ImageView的」碰撞每次縮放(因此變得更大和更大),但是當它碰撞一次時,「中心」變得非常大,我認爲這是由於計時器造成的。我該如何解決這個問題?對不起,我的英語我是法國人:/

回答

0

改變這種

self.scale = self.scale + 0.01;或自定義值

self.scale = self.scale + 0.5;

這是用於刻度的一半將被添加更大,所以1.5倍1.0是正常

0

centre.transform已應用的scale因素。無需自己跟蹤它。

如果您打算通過每次10%提高centre的規模,這樣做,

centre.transform = CGAffineTransformScale(centre.transform, 1.1, 1.1); 

這將添加到現有的規模。如果您覺得這很大,請減少縮放的數量,例如1.02或1.002。

如果您打算維護自己的規模,你可以做

centre.transform = CGAffineTransformMakeScale(scale, scale); 

您也可以通過每次增加1比例因子。這真是一個巨大的因素。比例因子2將使圖像的大小增加一倍,2將增加三倍。而且,由於測試碰撞的時間間隔相當短,因此您可能需要查看較小的比例因子。

+0

我使用「centre.transform = CGAffineTransformScale(centre.transform,1.1,1.1);」它可以工作,但每當我認爲這是由於計時器造成的,圖像會以不同的比例變大,因爲當發生衝突時,計時器會快速移動:/ –

+0

確實如此。考慮到你的時間間隔是1/100秒,你應該嘗試較低的值,例如'(1.01,1.01)'或'(1.001,1.001)',這取決於什麼是合適的。 –

+0

是的,這正是我所做的,但我使用(1.001,1.001),但問題仍然在這裏它慢慢增長,但一直在不同的規模我總是認爲imageView沒有從超級查看quicly或類似的東西,你有有任何想法嗎 ? –