簡體   English   中英

如何設置UITableView的背景(tableview樣式為“Grouped”)才能使用圖像?

[英]How can I set the background of UITableView (the tableview style is “Grouped”) to use an image?

如何設置UITableView的背景(tableview樣式為“Grouped”)才能使用圖像?

在較新版本的SDK中,如果您希望它是透明的,您需要設置tableView.backgroundView ,嘗試這樣的事情:

tableView.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;

我們需要對這個簡單的背景做點什么。 我們將使用PNG圖像並將其顯示在UITableView后面。

  1. 准備PNG圖像。 它應該是320x460(如果您的應用程序中顯示狀態欄)或320x480(如果您隱藏它)。
  2. 將其拖入XCode並進入Resources文件夾並添加到您的項目中
  3. 將包含UITableView的NIB文件加載到Interface Builder中
  4. 打開庫(工具>庫),切換到“媒體”選項卡,然后將圖像拖到視圖中,創建一個新的UIImageView。
  5. 使用檢查器移動圖像並調整其大小,使其位於X = 0,Y = 0,寬度= 320,高度= 480
  6. 將UIImageView放在UITableView后面(Layout> Send to Back)
  7. 保存,構建和開始!

令人失望的是,你將無法看到你的背景。 UITableView的背景阻止我們看到UIImageView。 您需要進行三項更改:

  1. 在Attributes Inspector中,確保未選中UITableView的“opaque”復選框!
  2. 將UITableView的背景顏色設置為透明:

    tableView.backgroundColor = [UIColor clearColor];

我希望這有助於解決您的問題。 它對我有用,我還沒有找到一種更優雅的方式來顯示UITableView的背景圖像。

與直接在UITableView上設置背景圖像相比,我的解決方案的優勢在於您可以縮進表格的內容。 我經常想這樣做只是在屏幕底部顯示兩個或三個表格單元格。

[tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"whatever.png"]]];

tableView.backgroundView = nil; 足夠。 無需將背景顏色設置為“清除顏色”。

在UI Builder中,背景顏色具有“其他”選項。 這會產生一個顏色選擇器。 顏色選擇器具有不透明度設置。 如果將“顏色”的“不透明度”設置為0,則無法正常工作。

一種方法是使表視圖透明(將視圖的背景設置為0%不透明度)並將UIImageView放在UITableView后面。 請記住,透明表和表格單元格的表現不如不透明表格。

我發現你必須使用具有透明背景的“普通”樣式表,然后通過將每個單元格的backgroundView設置為具有模擬圓形外觀的圖像的UIImageView來重新創建圓角單元格的外觀。 這意味着頂部,底部和中間單元需要不同的背景圖像。

然而,這並沒有解決當用戶點擊單元格時它會“突出顯示”時會發生什么 - 它會看起來平方。 您可以通過為偽造的表格單元格背景圖像設置突出顯示的圖像來解決此問題。 您還需要使用白色突出顯示版本創建自己的公開附件視圖(ImageView)。 然后你可以創建一個我正在使用的單元格(如下)。 在我分配其中一個單元格之后,我將backgroundView和accessoryView設置為我的UIImageViews。

#import "ClearBackRoundedTableCell.h"


@implementation ClearBackRoundedTableCell

- (id)initWithReuseIdentifier:(NSString *)reuseIdentifier 
{
    if (self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]) {
    }
    return self;
}


-  (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    if( [[self.accessoryView class] isSubclassOfClass:[UIImageView class]] )
        ((UIImageView *)self.accessoryView).highlighted = highlighted;

    if( [[self.backgroundView class] isSubclassOfClass:[UIImageView class]] )
        ((UIImageView *)self.backgroundView).highlighted = highlighted;

    self.textLabel.highlighted = highlighted;
}

@end

如果你走這條路線就會注意到:分組表格中的單元格通常是300像素寬(縱向模式),但是這里的普通表格需要為302寬,以允許表格兩邊的灰線,這是通常在表格單元格的“內容”之外。

花了一段時間用顏色選擇器后,我發現你需要指定不透明的背景而不是表視圖單元格 xib,而是指定單元格所在的表視圖 ,這是另一個xib。 從我所看到的,表視圖單元格背景屬性沒有視覺效果。

試試這個

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;

它在分組tableview中對我有用。

使UITableview背景為清晰的顏色。

如果將圖像添加到資源中,則可以通過編程方式執行此操作:

self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.opaque = NO;
UIImage *backroundImage = [UIImage imageNamed:@"my_backround"];
UIImageView *backroundImageView = [[UIImageView alloc] initWithImage:backroundImage];

另外,您可以使用以下樣式在Interface Builder中執行此操作:

IB tableview與背后的圖像

您可能需要將頭文件界面從UITableViewController配置為UIViewController並添加<UITableViewDataSource,UITableViewDelegate> ,也不要忘記將tableview的屬性設置為不透明,並將tableviews數據源和委托出口重新連接到viewcontroller。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM