2014-02-07 51 views
0

我想移動一個UIImage,第一個按鈕按下按鈕創建圖像,第二個按鈕移動它。UIimage不會在btn新聞上移動,我做錯了什麼?

只有在按下按鈕時圖像才需要存在。

在模擬器中,它創建按鈕並放置它,第二次點擊它就不會做任何事情。

這是我的代碼

- (IBAction) btn:(id)sender { 

    UIImageView *myImage = [[UIImageView alloc] init]; 

    myImage.image = [UIImage imageNamed:@"keyframe"]; 

    if (startUp == 1){ 

     //Create Image and add to view 
     myImage.frame = CGRectMake(200, 300, 10, 10); 
     myImage.image = [UIImage imageNamed:@"keyframe"]; 
     [self.view addSubview:myImage]; 

     //Set startUp to 0 and output rect value 
     startUp = 0; 
     NSLog(@"currentFrame %@", NSStringFromCGRect(myImage.frame)); 

    }else if (startUp == 0){ 

     //Change position, size and log to debug 
     myImage.frame = CGRectMake(500,100 ,20, 20); 
     NSLog(@"newFrame %@", NSStringFromCGRect(myImage.frame)); 
    } 
} 

你如何編程方式移動以編程方式添加的UIImage? 我試着改變中心值,但那也不管用。

+2

這有絕對** **什麼做的Xcode。至於這個問題,想想你的動作處理器方法的作用。您正在創建圖像視圖**兩次。** – 2014-02-07 15:13:24

+0

它之所以是Xcode,是因爲我使用Xcode進行編程。我對編程相當陌生,我認爲這個代碼會起作用,你能否讓我朝正確的方向編碼這個簡單的動作? – Seeerdar

+0

@ Seerdar如果您使用另一個IDE或根本沒有IDE來編寫代碼,那麼問題和問題本來是一樣的。 - 解決方案:不要創建按鈕兩次。 – 2014-02-07 15:29:12

回答

0

嘗試這樣的事情 - 測試和工作樣本:

#import "ViewController.h" 

@interface ViewController() { 
    BOOL startUp; 

    UIImageView *myImage; 
} 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    startUp = YES; 
} 

- (IBAction)doWork:(id)sender { 
    if (startUp) { 
     UIImage *img = [UIImage imageNamed: @"keyframe"]; 
     myImage = [[UIImageView alloc] initWithImage: img]; 

     [myImage sizeToFit]; 

     [myImage setCenter: CGPointMake(200, 300)]; 

     [self.view addSubview: myImage]; 

     startUp = NO; 
    } else { 
     [myImage setCenter: CGPointMake(400, 500)]; 
    } 
} 

@end 
+1

要改善此代碼 - 移動創建並將圖像添加到viewDidLoad方法,並在doWork中只更改中心。 –

+0

謝謝,現在就試試吧。 – Seeerdar

+0

它的工作原理,非常感謝!我正在創建另一個「帶有x,y值的關鍵幀」,你能否指出我如何在2 x,y座標之間添加貝塞爾曲線?曲線的原因是我需要讀取兩點之間曲線的數據。例如,keyframe1在x:10上,而keyframe2在x:70上我想在兩個值之間創建一個bezier,並從曲線中讀取10到70之間的緩和值。 – Seeerdar