2017-02-04 431 views
0

我是Objective-C的新手。我創建了一個向上移動3個按鈕的動畫。這些按鈕包含圖像。但是,當這個按鈕動畫發生時,它會調整按鈕圖像的大小並使其變大。我試圖糾正下面的代碼來調整按鈕圖像的大小,但我仍然得到巨大的按鈕。有人可以幫幫我嗎?它應該是寬度:78高度:76。我試圖更換寬度和高度,但它仍然無法正常工作。注意:只需更正代碼,我不需要完全不同的答案。如何以編程方式調整按鈕動畫的大小

-(IBAction)Search:(id)sender { 

CGFloat screenWidth = self.view.bounds.size.width; 
CGFloat screenHeight = self.view.bounds.size.height; 

CGFloat normalizedX = (124/320); // You calculate these 'normalized' numbers, possibly from a designer's spec. 
// it's the percent the amount should be over, as number from 0-1. 
// This number is based on screen width of 320 having x 124 pt. 

CGFloat startingX = normalizedX * screenWidth; 
CGFloat startingY = (475/200) * screenHeight; 
CGFloat width = (42/40) * screenWidth; 
CGFloat height = (30/30) * screenHeight; 

CGRect startingRect = CGRectMake(startingX, startingY, width, height); 

self.button.frame = startingRect; 
self.buttonTwo.frame = startingRect; 
self.buttonThree.frame = startingRect; 

// animate 
[UIView animateWithDuration:0.75 animations:^{ 
    CGFloat firstX = (13/770) * screenWidth; 
    CGFloat lowerY = (403/370) * screenHeight; 
    self.button.frame = CGRectMake(firstX, lowerY, width, height); 

    CGFloat secondX = (124/424) * screenWidth; 
    CGFloat upperY = (347/447) * screenHeight; 
    self.buttonTwo.frame = CGRectMake(secondX, upperY, width, height); 

    CGFloat thirdX = (232/680) * screenWidth; 
    self.buttonThree.frame = CGRectMake(thirdX, lowerY, width, height); 
}]; 
} 
+1

你想讓按鈕立即跳到相同的startingRect,然後動畫到不同的目的地?你想讓他們的尺碼改變嗎?發佈的代碼明確地調整了按鈕的大小,並且@DuncanC的觀察是關於浮點數學的。如果你想讓這些按鈕保持一個固定的大小,那麼就在它們的框架上使用CGRectOffset,它們只能操縱起源。 – danh

回答

2

在我看來,像你的身高和寬度數學是錯誤的。 (1)* screenWidth,或者屏幕的全部寬度(表達式42/40將使用整數數學來完成,結果爲1.0。如果它使用了浮點數, d得到1.05 * screenWidth,這將使圖像更大。)

您的高度計算有類似的問題。您將按鈕設置爲屏幕的整個高度,並略寬。

+0

是的,這是我遇到的代碼。我改變了它很多次,但它並沒有改變按鈕的大小。它應該是寬度:78高度:76.你會改變它到什麼?謝謝您的幫助! – Elizabeth429

相關問題