2013-02-06 58 views
0

我不是一個非常好的程序員,所以如果這是一個愚蠢的問題原諒我! 我剛學的IOS 圖像變換,我想一個圖像從一個位置到另一個按鈕單擊事件 這裏翻譯是代碼...ios的圖像翻譯

- (IBAction)showinfobybutton:(id)sender { 
    CGFloat v1 = imageview.center.x; 
    CGFloat v2 = imageview.center.y; 
    CGAffineTransform trans = CGAffineTransformTranslate(imageview.transform, v1, v2); 
    imageview.transform = trans; 
} 

有什麼不好的代碼。它只在y方向上轉換而不在x中。不管你爲v1函數賦值多少都不在乎。任何想法,這是怎麼回事..... 我完全stucked 感謝您的幫助

回答

5

在你的問題有關CGAffineTransform,一對夫婦的想法而言:

  1. 你在做這個init方法或viewDidLoad?如果是這樣,那麼在視圖創建過程中可能爲時過早,因爲imageview(如center)的許多UIView相關屬性在此時不可靠。仔細查看一下,確保你獲得了v1v2的非零值。如果你想看看幀座標或類似的東西,你可能會推遲到viewDidAppear或更高版本。

  2. 您使用的是自動佈局?打開故事板或NIB並查看文檔屬性(如下)。如果你在屏幕上移動東西,你可能想關閉它。

    enter image description here

  3. 順便說一句,你的設置v1和基於imageviewcenter好奇v2。您正在將center移動center的數量。通常你會看到類似下面的東西:

    CGFloat dx = 100.0; 
    CGFloat dy = 200.0; 
    
    [UIView animateWithDuration:1.0 
           animations:^{ 
            CGAffineTransform trans = CGAffineTransformTranslate(self.someView.transform, dx, dy); 
            imageview.transform = trans; 
           }]; 
    

    順便說一句,我用動畫(a),因爲這往往是更好的用戶體驗;和(b)在做這樣的診斷時,它可以讓我更容易地看到它正在發生什麼變化以及它正在變化。如果你不想動畫,顯然不要使用animateWithDuration的代碼。


順便說一句,如果你想移動UIView控制,如果你不使用自動佈局,最常見的方法是使用animationWithDuration改變無論是centerframe,如:

[UIView animateWithDuration:1.0 
       animations:^{ 
        imageview.center = CGPointMake(newX, newY); // set newX and newY to whatever you want 
       }]; 

如果您使用自動佈局,則該過程稍微複雜一些。自動佈局中的一種技術是以編程方式更改約束,但這可能超出了此問題的範圍。

+1

良好的編輯,我收回我以前的評論 –

+0

剛纔我發現在我的代碼中,如果我把V1的價值很高的價值前465465746574547然後它使小隨機移動在x方向 – bhawesh

+1

問題是自動佈局.. ....感謝您寶貴的時間 – bhawesh