UITableView 명확한 배경


90

iOS 7이 공식적으로 출시되지 않았다는 것을 알고 있으며 이에 대해 논의해서는 안되지만이 문제를 해결하려고 미쳐 가고 있습니다. iOS 6에서는 테이블 뷰가 투명하고 멋지게 보입니다. iOS 7을 처음 실행하면 배경이 흰색입니다.

표 backgroundColor, 셀 색상 등을 UIColor clearColor로 만들려고 시도했지만 변경 사항이 없습니다.

이 문제를 해결하는 방법?

탁자


1
테이블 backgroundView을 명확한 것으로 설정하려고 했습니까?
실행 취소

배경색을 설정하는 코드를 보여줄 수 있습니까? 부모 관점은 어떻습니까? 아마도 테이블 뷰 배경은 분명하지만 부모는 그렇지 않습니까?
sooper

나는 똑같은 것을 발견했지만 현재 버전을 iOS 7.0으로 이전 한 동일한 앱을 설치했을 때 발생하지 않았습니다. 이 문제가 xCode5.0에 있습니까?
Totumus Maximus 2013

답변:


123
    // Fix for iOS 7 to clear backgroundColor
    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView = [[UIView new] autorelease];
    cell.selectedBackgroundView = [[UIView new] autorelease];

cellForRowAtIndexPath에서

또한 tableview에 실제로 투명한 배경이 있는지 확인하십시오 (스토리 보드에서). 여기에 이미지 설명 입력


(jQuery과 *)있는 tableView cellForRowAtIndexPath : (NSIndexPath *) indexPath (있는 UITableViewCell *)있는 tableView - 조지는 방법 안에 그 코드를 추가
IanStallings

1
이 경우 selectedBackgroundView가 정말로 필요한 경우 cellForRowAtIndexPath에 다음을 넣을 수 있습니다. cell.selectedBackgroundView = [[[UIImageView alloc] initWithImage : [UIImage imageNamed : @ "yourBgImage.png"]] autorelease]; 또는 awakeFromNib에서도 : self.selectedBackgroundView = ... 참고 : self.backgroundColor = [UIColor clearColor]; iOS7의 awakeFromNib에서 작동하지 않습니다. 그러나 : cell.backgroundColor = [UIColor clearColor]; iOS 7.0 용 cellForRowAtIndexPath에서만 제대로 작동합니다
slamor

11
행만 추가하면됩니다. cell.backgroundColor = [UIColor clearColor];
evya 2013 년

이것은 charm cell.backgroundColor = [UIColor clearColor];
bpolat 2013

Swift에서 어떻게할까요?
Qadir Hussain

58

이것을 넣어 :

cell.backgroundColor = [UIColor clearColor];

이 섹션의:

cellForRowAtIndexPath

1
아이폰 OS 6에서,을 설정하기에 충분 backgroundView빈보기로하지만,이 추가 코드는 아이폰 OS 7 필요하다
케빈 테두리

25

먼저 backgroundView를 nil로 설정하십시오.

[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];

이것이 iOS7 문서의 변경인지 또는 항상 존재했고 배경색에 영향을 미치지 않았는지 확실하지 않지만 UITableView 클래스 참조 @property backgroundView

"테이블 뷰의 배경색을 설정하려면이 속성을 nil로 설정해야합니다."

편집 : 수정 된 코드 구문


25

이것은 대답되었지만 많은면에서 잘못되었습니다.

아래 대리자 메서드를 구현해야합니다.

    - (void)tableView:(UITableView *)tableView  willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cell setBackgroundColor:[UIColor clearColor]];
}

셀이 렌더링 된 이후이므로 cellForRowAtIndexPath에 수정 사항을 넣을 수 없으며 배경이 지워지기 전에 흰색 배경이 깜박입니다 (더 느린 장치에서).

이 위임 방법을 사용하면 문제가 해결됩니다!


1
예. iOS 7의 경우 이것은 배경을 지우는 방법입니다. 위의 다른 모든 제안은 작동하지 않을 수 있습니다.
girish_vr 2014

15

실제로 셀 배경색을 변경하는 공식적으로 올바른 위치는 문서 ( UITableViewCell Class Reference ) 에 따라 다릅니다 .

미리 정의 된 셀을 사용하든 사용자 지정 셀을 사용하든 backgroundView 속성을 사용하거나 상속 된 backgroundColor 속성을 변경하여 셀의 배경을 변경할 수 있습니다. iOS 7에서 셀은 기본적으로 흰색 배경을가집니다. 이전 버전의 iOS에서 셀은 주변 테이블보기의 배경색을 상속합니다. 셀의 배경색을 변경하려면 테이블 뷰 델리게이트의 tableView : willDisplayCell : forRowAtIndexPath : 메소드에서 변경하십시오.


나는 이것을 시도하고 있지만 표시된 맨 처음 셀은 모두 흰색 배경을 가지고 있습니다. 스크롤하여 새 셀을 만들면 원하는 투명 배경을 갖게됩니다. 무엇을 시도해야할지 모르겠습니다…
David Dunham

신경 쓰지 마세요. 타이밍 문제인 것 같습니다. 너무 이른 awakeFromNib에서 작업을하고있었습니다.
David Dunham


6

이것은 매우 실망스러운 문제입니다. 내 현재 솔루션은 다음과 같습니다.

이것을 UITableViewCell하위 클래스에 추가하십시오 .

- (void)didMoveToSuperview {
    [super didMoveToSuperview];

    self.backgroundColor = [UIColor clearColor];
}

오 이런. 감사합니다. 내 밤을 구했습니다. 당신의 대답은 받아 들여졌어야합니다.
Michal Shatz 2015 년

5

이것은 iOS7 +에서 나를 위해 일했습니다.

self.tableView.backgroundColor =[UIColor blueColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = nil;`

그리고 나서 cellForRowAtIndexPath:

cell.backgroundColor = [UIColor clearColor];


4

이것은 내가 각 셀에 대한 명확한 배경색과 테이블 자체에 대한 명확한 색상을 편집 할 때만 저에게 효과적이었습니다 .. 둘 다 프로그래밍 방식으로

테이블의 선명한 색상을 설정하려면 :

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    initMenu()
    myTableView.backgroundColor = UIColor.clearColor()
}

셀의 색상을 설정하려면 :

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("tablecellid", forIndexPath: indexPath)
    cell.backgroundColor = UIColor.clearColor()
    return cell
}

3

좋은 것 하나. UITable의 기본 색상이 흰색 인 것 같습니다 (이유를 모르겠습니다).

배경 흰색

그러나 그것을 더 잘 바꾸십시오.


완전한! 그것은 잃어버린 평화였습니다. 추가 코드 줄이 필요하지 않습니다!
Morpheus78

3

첫 번째 세트

tableView.backgroundColor = [UIColor clearColor];

두 번째 세트

tableCell.backgroundColor = [UIColor clearColor];

3

테이블보기 @IBOutlet weak var yourTable : UITableView를위한 IB Outlet 생성!

뷰로드에서

override func viewDidLoad() {
    yourTable.delegate = self
    yourTable.dataSource = self

    yourTable.backgroundColor = UIColor.clearColor()
}

Cell의 색상을 지우려면 다음을 수행하십시오.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    cell.backgroundColor = UIColor.clearColor() 

}

2

내 앱에서 .NET을 업데이트 할 때 수업에 색상 을 설정해야 backgroundColor했습니다 .UITableViewCell[UIColor clearColor]iOS 7


2

시험

[myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[myTable setSeparatorInset:UIEdgeInsetsZero];

cell.backgroundColor = [UIColor clearColor];

2

제 경우에는 xib를 사용하여 셀을 만들었습니다. xcode5의 인터페이스 빌더가 clearColor를 cell.backgroundColor로 설정하는 데 문제가있는 것 같습니다.

내가해야 할 일은 실제로 설정하는 것이 었습니다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// get the cell from the nib
//then force the backgroundColor
cell.backgroundColor = [UIColor clearColor]
return cell;
}

제어가 비 무효 기능의 끝에 도달
ropo

2

테이블과 셀에 대해서도보기 배경에서 색상 지우기를 선택하면됩니다.


2

스위프트 3

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.backgroundColor = UIColor.clear
}

1
// Fix iOS 7 clear backgroundColor compatibility 
// I Think this two lines only are enough

cell.backgroundColor = [UIColor clearColor];
cell.selectedBackgroundView = [[UIView new] autorelease];

0

세트

tableView.backgroundColor = [UIColor clearColor];

viewDidLoad에서.

이것이 작동하지 않으면 다음을 시도하십시오.

tableView.backgroundView = nil;

0

신속한 3

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
    cell.backgroundColor = .clear
    cell.backgroundView = UIView()
    cell.selectedBackgroundView = UIView()
    return cell
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.