backgroundColor
にUITableView
を設定すると、iPhone(デバイスおよびシミュレーター)では正常に動作しますが、iPadシミュレーターでは動作しません。代わりに、groupTableViewBackgroundColor
を含む設定した色に対して明るい灰色の背景を取得します。
再現する手順:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor];
}
ご協力いただきありがとうございます!
これらのいずれかを試してください。
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
このソリューションに感謝します。これをUIViewControllerのIBOutletでUITableViewプロパティに適用すると、次のように機能します。
[panelTable setBackgroundView:nil];
[panelTable setBackgroundView:[[[UIView alloc] init] autorelease]];
[panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent
IPadでは、backgroundView
プロパティを使用して、グループ化されたテーブルの灰色の背景色を作成しているようです。したがって、iPadでグループ化されたテーブルの背景色を変更するには、nil
プロパティをbackgroundView
アウトしてから、目的のテーブルビューでbackgroundColor
を設定する必要があります。
- (void)viewDidLoad
{
[super viewDidLoad];
// If you need to support iOS < 3.2, check for the availability of the
// backgroundView property.
if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) {
self.tableView.backgroundView = nil;
}
self.tableView.backgroundColor = [UIColor whiteColor];
}
Xcode 6.1およびiOS 8.1の時点で、特にiPadの場合(セルの背景も設定したい場合)、テーブルの背景とセルの背景を設定する必要があることに注意する価値があると思います。
たとえば、iPhoneストーリーボードでは、セルをクリアカラーに設定し、背景画像付きの透明なテーブルに対してテーブルの背景画像をプログラムで設定できます。ただし、iPadでこの同じ構成を表示する場合、セルは明確ではありません。 iPadでは、セルをプログラムでクリアするように設定する必要があります。
テーブルにbackgroundColorとViewを設定してみましたが、運がありませんでした(Xcode 5 iOS7.1 iPadシミュレーター)。
セル自体のbackgroundColorを使用すると、iOS 7.1 4/2014でこれが修正されました
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"ViewSomeTriggerCell";
// get a cell or a recycled cell
sictVCViewSomeTriggerCell *cellTrigger = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// put a picture and a Word in the cell (positions set in .xib)
NSString * tname = [self.fetchedTriggersArray objectAtIndex:indexPath.row];
cellTrigger.imageTrigger.image = [UIImage imageNamed:@"icon_appicon.png"];
cellTrigger.labelName.text = tname;
// set background color, defeats iPad wierdness
// http://stackoverflow.com/questions/2688007/uitableview-backgroundcolor-always-gray-on-ipad
// clearColor is what I wanted, and it worked, also tested with purpleColor
cellTrigger.backgroundColor =[UIColor clearColor];
return cellTrigger;
}
この種の問題もありました。 UITableView
の背景色は、設定に関係なく常にgroupTableViewBackgroundColor
になります。
症状はこの問題のようです- ITableViewはビューが表示される前に背景色をリセットしています
init
関数で背景色を設定した後、それは正しいです。 viewDidLoad
およびviewWillAppear
ステージでは、正しいです。ただし、viewDidAppear
では、背景色はデフォルトの色にリセットされます。
受け入れられた答えは現在機能しません。
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[UIView alloc] init]];
これが私の解決策です。 tableViewの背景色は、viewDidLoad
やinit
ではなく、viewWillAppear
functionで設定するだけです。
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.backgroundColor = [UIColor clearColor];
}
上記のどれも、単一のXIBを使用して指定されたUIViewController-> UITableViewでは機能しませんでした。うまくいったのは、セットアップ全体をストーリーボードに移動し、IBインスペクターを使用して背景色を設定することでした。
UIViewControllerを別のUIViewControllerに追加する場合、ビューの背景をUITableViewに加えてclearColorに設定する必要があります。そうしないと、明るい灰色ではなく白い背景が表示されます。
if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
[myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];
アプリケーションがiPhoneとiPadの両方をターゲットにしている場合、次のようにできます。
[myTableView setBackgroundColor:[UIColor clearColor]]; // this is for iPhone
if ([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone) {
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[UIView alloc] init]];
} // this is for iPad only
TableView allocにはARCの自動解放がないことに注意してください。