2012-10-10 100 views
0

我不使用界面生成器就創建了多個圖像。我使用此代碼:如何在沒有界面生成器的情況下移動現有圖像

for (Row* row in parser.rows) { 
     CGRect IphoneFrameImageRect; 
     IphoneFrameImageRect = CGRectMake(10, 10, 150.0f, 150.0f); 
     UIImageView *IphoneFrame = [[UIImageView alloc] initWithFrame:IphoneFrameImageRect]; 
     NSString *IphoneFrameurl = [NSString stringWithFormat:@"http://some.url.com/iphone/IphoneFrame.png"]; 
     [IphoneFrame setImage:[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:IphoneFrameurl]]]]; 
     [IphoneFrame setTag:(i)]; 
     IphoneFrame.opaque = YES; // explicitly opaque for performance 

     [self.view addSubview:IphoneFrame]; 
     [IphoneFrame release]; 
} 

我需要將這些圖像移動到橫向模式中的不同位置。我做了每張圖片的標籤,看起來我可以使用這個標籤選擇圖片。但是,我怎麼能給圖像一個新的座標?我有這樣的代碼:

-(void)positionViews { 
    UIInterfaceOrientation destOrientation = self.interfaceOrientation; 

    int i=4; //Picture with tag=4 for example 
    UIImage *tempImage=(UIImage *)[self.view viewWithTag:(i)]; 

    // HOW TO MOVE ?? 

} 

我能夠使用這個代碼用一個按鈕來做到這一點:

UIButton *tempButton=(UIButton *)[self.view viewWithTag:i]; 
[temp setFrame:CGRectMake(x, y, X10ButtonWidth, X10ButtonHeight)]; 
+0

不應該tempImage是一個UIImageView?如果您將其更改爲UIImageView,則應該可以像調整Button一樣調用setFrame。 – creativ

回答

0

您是兩回事/類混合起來:

  • UIImage那代表圖像數據,其像素在內存中
  • UIImageView that repr在屏幕上顯示顯示圖像。

如果它更清楚你的UIImageUIImageView什麼NSString是一個UILabel。表示數據/內容的對象與可以在屏幕上顯示的對象不同。

所以,當你想用你設置的標籤檢索您的ImageView,您檢索視圖,尤其是對於一個UIImageView什麼事情,而不是一個UIImage


你的施法更改爲UIImageView,你將能夠調用setFrame:上它,你做同樣的方式爲您UIButton(如setFrame:UIView類的方法,都UIImageViewUIButtonUIView子)。

UIImageView *tempImageView = (UIImageView *)[self.view viewWithTag:(i)]; 
[tempImageView setFrame:...]; 

或者甚至沒有做任何投,作爲viewWithTag:返回UIView,這就是你所需要的,如果你只是想改變框架:無論它是一個基本的UIView或明確一個UIImageView或什麼樣的看法呢無關緊要,只需要更改frame屬性,因爲這是屬於通用UIView類的屬性,並且可以應用於任何UIView,無論其具體的子類是什麼UIView

UIView *tempImageView = [self.view viewWithTag:(i)]; 
[tempImageView setFrame:...]; 
+0

非常感謝!這是我想要的方式。 – ipas

相關問題