2014-03-05 61 views
1

我正在研究基於視圖的應用程序,我已經設置瞭如下背景圖像。如何在iOS中正確設置背景圖像

.h文件中:

UIImageView *BackgroundImage; 

.m文件:

viewDidLoad方法:

BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG.png"]]; 
[[self view] addSubview:BackgroundImage]; 
[BackgroundImage.superview sendSubviewToBack:BackgroundImage]; 

,並在旋轉法:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 

BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG2.png"]]; 
[[self view] addSubview:BackgroundImage]; 
[BackgroundImage.superview sendSubviewToBack:BackgroundImage]; 
[super viewDidLoad]; 

} 

使用此代碼我我能夠設置背景,但在r otation第一個加載的圖像沒有被刪除,第二個加載在第一個後面,所以只有一半圖像是可見的,因爲第一個圖像在第二個圖像的前面。

有沒有更好的方法來做到這一點?

OR

我如何才能刪除第一個圖像,然後設置第二個?

請幫我解決這個問題。

+0

嗨,只是一種編碼風格點 - 變量名在Objective-C應該開始用小寫字母,大寫字母和大寫。所以'BackgroundImage'實際上應該是'backgroundImage'。 –

+0

好的謝謝你 –

回答

2

更改didRotate ...方法:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    [BackgroundImage removeFromSuperview]; 
    BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG2.png"]]; 
    [[self view] addSubview:BackgroundImage]; 
} 

通知的[的BackgroundImage removeFromSuperview]一行。我們在這裏做的是每當設備旋轉時,您將刪除舊的圖像視圖並添加另一個。

另請注意,變量名稱應以小寫字母開頭,因此BackgroundImage應爲backgroundImage。這是爲了告訴他們除了班級的名字。

+0

謝謝這個作品... !!!! –

+0

@Zaibi這是一個不同的問題。你應該搜索關於該主題的問題的stackoverflow,如果你沒有找到答案,然後問一個新的問題。 –

0

這是因爲您正在初始化UIImageview。最好使用具有不同圖像的backgroundImage的相同UIImageView。

[背景圖像設置圖像:[UIImage imageNamed:@「BG2.png」]];

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    BackgroundImage.image = [UIImage imageNamed:@"BG2.png"]; 
} 

您的代碼保持旋轉時增加新的圖像視圖:

0

旋轉時,剛剛成立的新形象。

如何在iOS中正確使用?

  • 使用下劃線和小寫字母開頭的伊娃名字:_backgroundImage代替BackgroundImage
  • 在正確的位置插入一個子視圖:[self.view insertSubview:_backgroundImage atIndex:0];
+0

這是否也會更改imageview的框架? –

+0

@Thedude不,它不。這是需要的嗎? OP沒有說改變框架。 –

+0

雖然這是真的OP沒有說什麼,因爲設備是旋轉的,它是設置的背景圖像,我認爲這兩個圖像會有不同的幀。 –

1

如果你改變你這樣的代碼應該工作

BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG.png"]]; 
[self.view addSubview:BackgroundImage]; 
[self.view sendSubviewToBack:BackgroundImage]; 

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 

    [BackgroundImage removeFromSuperview]; 
    BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG2.png"]]; 
    [self.view addSubview:BackgroundImage]; 
    [self.view sendSubviewToBack:BackgroundImage]; 
    [super viewDidLoad]; 

} 
+0

如果對於某些視圖,我必須限制旋轉視圖應保持縱向視圖的應用程序...。那我該怎麼辦? –