2014-01-22 30 views
1

我有一個UIButton,它可以在點擊後更改屏幕上的位置。用戶然後點擊一個不同的按鈕來改變按鈕的圖像,我希望它保持在新的位置。目前使用我的代碼,它在更改圖像後恢復到原始位置。下面是代碼:如何在更改圖像後將UIButton保留在同一位置?

首先移動至Button(newLocation是UIImageView的位置):

[movableButton setImage:[UIImage imageNamed: @"differentImage.png"] forState:UIControlStateNormal]; 
+0

嘗試關閉自動佈局。一些更多的代碼可以幫助正確追蹤錯誤。 – Dinesh

+0

我知道,關閉自動佈局會糾正這個問題,但我想在項目中使用自動佈局。 –

+0

然後你可以嘗試修復按鈕的框架。例如:'movableButton.frame = CGRectMake(position.x,position.y + 10,size.width,size.height);' – Dinesh

回答

1

我不明白爲什麼它會移動。我只是測試它,它確實移動。我需要研究它爲什麼會移動,並會回到你身邊。

但是這會解決它移動的問題。

CGPoint currentLoc = self.imageButton.center; 
[self.imageButton setImage:[UIImage imageNamed:@"face"] forState:UIControlStateNormal]; 
self.imageButton.center = currentLoc; 
+0

謝謝,這是我發現的唯一工作。聽起來像這可能是一個解決方法,所以如果你找到一個更簡單的方法,請讓我知道。 –

+0

如果您使用自動佈局,您不應該直接修改'center'或'frame'。你應該更新你的約束來考慮按鈕的新大小。按鈕移動的原因是,在某些時候,約束正在被重新評估,並且求解器忽略了您手動設置的位置。 –

0

確定現在:

movableButton.center = [newLocation center]; 

然後通過點擊不同的按鈕的按鈕圖像更改我得到了你的問題,你可以做的是在第二個按鈕的動作中啓動一個計數器:

-(void)secondButtonClick 
{ 
static int counter = 1; 
    if(counter %2 == 0) 
    { 
    firstButton.center =cgpoint a; // a gain some point where you wan't to place the center 
    } 
if(counter %2 != 0) 
    { 
     [firstButton setBackgroundImage:[UIImage imageNamed:@"logout.png"] forState:UIControlStateNormal]; 
    } 

counter ++;

} 

如果改變圖像之前狀態是否要改變位置,你可以修改.....另外uou能改變中心alsolike這

a.x =a.x+10; 
a.y =a.y +10; 
myButton.center = a; 
+0

基本上有兩個按鈕,一個(按鈕1)改變(位置和圖像),和一個改變(按鈕2)。按下按鈕2時,它會更改第一個按鈕的位置。當再次按下時,它會改變圖像。問題是,當我第二次按下它並改變圖像時,它也會恢復到原來的位置。 –

0

試試這個

-(IBAction) movingButtonClicked 
{ 
     [movingButton setFrame:CGRectMake(movingButton.frame.origin.x+10,movingButton.frame.origin.y+20,50,50)]; 
} 

-(IBAction) changeImage 
{ 
    [movingButton setImage:[UIImage imageNamed: @"differentImage.png"] forState:UIControlStateNormal]; 
} 
相關問題