2012-01-04 160 views
6

我有一個其中包含UIControlUIScrollView元素的XIB文件。我想爲視圖添加背景圖片。我嘗試在IB中添加一個ImageView,但是我無法將其作爲背景呈現,並且遮擋了控件元素。發送sendViewBack消息似乎也沒有做任何事情。以編程方式在背景圖像中設置背景圖像

當我以編程方式創建UIImageView時,它不顯示。

下面是我嘗試的代碼:

編程方式創建

UIImage *imageBackground = [UIImage imageWithContentsOfFile:@"globalbackground"]; 

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:imageBackground]; 

[[self view] addSubview:backgroundView]; 

[[self view] sendSubviewToBack:backgroundView]; 

與NIB文件

[[self view] sendSubviewToBack:background]; 

處理其中的背景是在頭文件中聲明和連接到一個IBOutlet IB中的NIB圖像視圖。

有沒有我在這裏失蹤的一個步驟?

回答

8

設置框架並且不使用sendSubviewToBack:。如果您正在使用的UIImageViews工作,你必須使用[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageName.png"]];

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageBackground"]]; 
backgroundView.frame = self.view.bounds; 
[[self view] addSubview:backgroundView]; 

希望這是交易。

+1

是否有其他用戶界面組件,確保使用insertSubView象下面這樣:[self.view insertSubview:backgroundView atIndex:0]; – TharakaNirmana 2015-04-02 09:04:58

5
  • 不要添加圖像視圖作爲滾動視圖的子視圖,它需要在層次結構的最高層的單獨視圖,然後發送到Z順序的後面。
  • 您需要將滾動視圖的背景設置爲[UIColor clearColor],並確保滾動視圖未標記爲不透明。您可以在代碼或界面構建器中執行此操作。
  • 不要使用imageWithContentsOfFile然後只是傳遞一個沒有擴展名的文件名(我假設爲.png) - 這可能會返回nil。使用imageNamed:代替(你不要在這種情況下,提供一個擴展,iOS4的及以上)

根據您的圖像的性質,還可以生成與它的顏色,並使用該背景顏色你的滾動視圖。我假定self.view是滾動視圖:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"globalBackground"]];