iPad에서 UITableView backgroundColor가 항상 회색


128

backgroundColor대해 설정하면 UITableViewiPhone (장치 및 시뮬레이터)에서는 제대로 작동하지만 iPad 시뮬레이터에서는 작동하지 않습니다. 대신에 포함하여 설정 한 모든 색상에 밝은 회색 배경이 나타납니다 groupTableViewBackgroundColor.

재현 단계 :

  1. 새로운 네비게이션 기반 프로젝트를 만듭니다.
  2. RootViewController.xib를 열고 테이블보기 스타일을 "그룹화"로 설정하십시오.
  3. 이 응답자를 RootViewController에 추가하십시오.

    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    }
  4. Simulator SDK 3.2를 선택하고 빌드하고 실행하십시오.
  5. 검정색 배경 (장치 및 시뮬레이터)이 나타납니다.
  6. 프로젝트 트리에서 대상을 선택하십시오.
  7. 프로젝트 : iPad 용 현재 대상 업그레이드를 클릭하십시오.
  8. 빌드하고 실행하십시오.
  9. 밝은 회색 배경이 나타납니다.
  10. 테이블 뷰 스타일을 일반으로 되 돌리면 검정색 배경이 나타납니다.

당신의 도움을 주셔서 감사합니다!


2
아, 이제 iOS6에서 iPhone과 iPad가 다시 정렬되었습니다.
Gerd

3
거의 사용하지 않는 용어 "재생 단계"를 사용하는 브라보! - P
콘스탄티노 Tsarouhas

답변:


245

이 중 하나를 시도하십시오.

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];

3
부작용이 있는지 모르겠지만 효과가 있습니다! 감사! self.tableView.backgroundView = nil;
rjobidon

30
매우 중요 : 이것은 SDK 3.2에서만 작동합니다. 3.1.3과의 호환성을 위해. 이전에는 테이블 뷰가 backgroundView 속성에 응답하는지 확인해야합니다. if ([self.tableView respondsToSelector : @selector (backgroundView)]) self.tableView.backgroundView = nil; 그렇지 않으면 앱이 갑자기 종료되고 갑자기 종료됩니다. 나를 믿을 수 있습니다!
rjobidon

1
예, 위의 해결책을 시도해 보았습니다. 누구나이 문제가 실제로 무엇인지 말해 줄 수 있습니까? 앱을 실행할 때 왜 회색으로 표시 되나요?
Naveen

누군가이 문제를 해결하는 데 왜 이것이 필요한지 알려주십시오.
mask8

분명히 새로운 iOS는 배경보기를 가능하게합니다. 왜 회색으로 보이는 이유는 Apple이 소개 한 문제 일뿐입니다. 매우 이상하고 매우 바보입니다. 그러나 매일 iOS를 코딩하는 동안 이상하고 바보 같은 일이 발생합니다.
The Lazy Coder

30

이 솔루션에 감사드립니다. UIViewController에서 IBOutlet을 사용하여 UITableView 속성에 이것을 적용했으며 다음과 같이 잘 작동합니다.

[panelTable setBackgroundView:nil];
[panelTable setBackgroundView:[[[UIView alloc] init] autorelease]];
[panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent

중간 라인이 필요하지 않습니다 [panelTable setBackgroundView : [[[UIView alloc] init] autorelease]];
NIKHIL

4
얼어 붙는 불 : 실제로있다. 그것 없이는, 당신은 표 셀 경계에 이상한 그림 유물을 얻습니다.
Hilton Campbell

6

iPad에서는이 backgroundView속성이 그룹화 된 테이블의 회색 배경색을 만드는 데 사용되는 것 같습니다. 따라서 iPad에서 그룹화 된 테이블의 배경색을 변경하려면 속성을 제거한 다음 원하는 테이블보기 를 설정 해야 nil합니다 .backgroundViewbackgroundColor

- (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];
}

예, 이전 iOS를 지원하려면이 확인을 추가해야합니다.
카림

2

Xcode 6.1 및 iOS 8.1 현재, 특히 iPad (셀 배경을 설정하려는 경우)의 경우 테이블 배경 및 셀 배경을 설정 해야하는 것으로 보입니다.

예를 들어, iPhone 스토리 보드에서 셀을 선명한 색상으로 설정 한 다음 배경 이미지가있는 투명한 테이블에 대해 프로그래밍 방식으로 테이블의 배경 이미지를 설정할 수 있습니다. 그러나 iPad에서 동일한 구성을 보려면 셀이 명확하지 않습니다. iPad의 경우 프로그래밍 방식으로 셀을 지우도록 셀을 설정해야합니다.


Xcode 6.4로 빌드하고 iOS 9.2에서 실행되는 앱에 대해이 문제가 발생합니다. Interface Builder에서 (정적) 테이블 뷰 셀의 배경색을 지우도록 설정하고 iPhone에서는 선명하게 보였지만 iPad에서는 뷰 컨트롤러의 -viewDidLoad:방법 에서 셀의 배경색을 선명하게 설정할 때까지 흰색이었습니다 .
그렉

1

테이블의 backgroundColor 및 View 설정을 시도했지만 운이 없었습니다 (Xcode 5 iOS7.1 iPad 시뮬레이터) .iPhone에서는 괜찮 았지만 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;

}


0

응용 프로그램이 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에 대한 자동 릴리스가 없습니다.


0

다른 UIViewController에 UIViewController를 추가하는 경우 UITableView 외에도 뷰의 배경을 clearColor로 설정해야합니다. 그렇지 않으면 밝은 회색 대신 흰색 배경이 표시됩니다.

if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
    [myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];

0
  • iPad 2 시뮬레이션
  • iOS 7.1에서 8.3 실행
  • XCode 6.3에서 빌드

위의 어느 것도 단일 XIB를 사용하여 지정된 UIViewController-> UITableView에 대해 작동하지 않았습니다. 작업은 전체 설정을 스토리 보드로 옮기고 IB 검사기를 사용하여 배경색을 설정하는 것이 었습니다.


0

나는 또한 이런 종류의 문제를 겪었다. UITableView배경 색상은 항상있을 것입니다groupTableViewBackgroundColor 에는 내가 설정 무슨 상관.

증상은 다음과 같습니다 -UITableView는보기가 나타나기 전에 배경색을 재설정합니다.

init기능에서 배경색을 설정하면 올바르게 설정됩니다. 에서 viewDidLoadviewWillAppear무대, 그것은 올바른 것입니다. 그러나viewDidAppear 배경색이 기본 색으로 재설정됩니다.

수락 된 답변이 지금 작동하지 않습니다.

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[UIView alloc] init]];

여기 내 해결책이 있습니다. or 대신 viewDidLoad함수 에서 tableView의 배경색을 설정하십시오 .initviewWillAppear

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.backgroundColor = [UIColor clearColor];
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.