[ios] UITableViewCell은 흰색 배경을 표시하며 iOS7에서 수정할 수 없습니다

에서 상속하는 사용자 정의 테이블 뷰 셀 클래스를 구현했습니다 UITableViewCell. 테이블 뷰에는 배경 이미지가 포함되어 있으므로 셀의 배경을 투명하게 만들고 싶습니다. iOS7 이전에는 멋지게 보입니다.

그러나 iOS7에서는 셀이 항상 흰색 배경으로 표시됩니다.


Xcode7, 2015 에서도 스토리 보드에 버그 가 있습니다. 코드에서 셀의 배경색을 설정해야합니다.



답변

Apple DOC가 말했듯이 ( UITableViewCell 클래스 참조 ) :

iOS 7에서 셀은 기본적으로 흰색 배경을 갖습니다 . 이전 버전의 iOS에서는 셀이 둘러싸는 테이블보기의 배경색을 상속합니다. 셀의 배경색을 변경하려면 테이블 뷰 대리자 의 tableView : willDisplayCell : forRowAtIndexPath : 메서드에서 변경하십시오.

따라서 투명한 배경으로 셀을 표시하려면 아래처럼 테이블보기 컨트롤러에서 대리자 메서드를 구현하면됩니다.

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

참고 : @null이 말했듯이 “… 인터페이스 빌더에는 버그가있는 것 같습니다 …”라고 버그가 있는지 완전히 확신하지 못하지만 그의 의견이 여러 번 투표를 한 것으로 보입니다. 따라서 IB를 사용하면 문제가있을 수 있습니다. 🙂


답변

나는 그것을 조금 조사하고 셀 backgroundColor가 Appearance 시스템에 의해 설정되어 있음을 알았습니다. 따라서 응용 프로그램의 모든 셀에 명확한 배경이 있으면 가장 쉬운 해결책은 다음과 같습니다.

[[UITableViewCell appearance] setBackgroundColor:[UIColor clearColor]];

배경이 다른 경우에도 기본 색상으로 선명한 색상이 가장 편리한 것 같습니다.


답변

셀을 리턴하기 전에 cellForRowAtIndexPath 메소드에이를 작성하십시오.

cell.backgroundColor = [UIColor clearColor];


답변

UITableViewCelliOS 7에서 의 기본 배경색 은 흰색입니다.

backgroundColor코드 어딘가에 속성 을 설정 해야합니다. 예를 들어, 셀을 새로 만든 후에 설정하십시오.

cell.backgroundColor = [UIColor clearColor];


답변

실제로 UITableView의 배경색이 명확하게 설정되지 않았기 때문에 문제가 발생했습니다. UITableViewCell의 배경색을 지우고 여전히 흰색으로 표시되는 경우 UITableView의 배경색이 선명하게 (또는 원하는대로) 설정되어 있는지 확인하십시오.

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

스위프트에서

tableView.backgroundView = nil
tableView.backgroundColor = UIColor.clearColor()


답변

이것은 분명히 iOS 버그입니다. iOS 8에서 배경색을 설정 Interface Builder하면 iPhone에서 잘 작동하지만 iPad에서는 항상 그렇습니다 whiteColor. 이를 수정하려면 cellForIndexPath데이터 소스 메시지에서 다음을 입력하십시오.

cell.backgroundColor = cell.backgroundColor

그리고 작동합니다. 이것이 바로 코드 자체가 거의 엉터리이기 때문에 버그라고 말한 이유입니다.하지만 작동합니다.


답변

기본적으로 UITableViewCell이 선택되어있을 수 있습니다. Xcode 6s의 새로운 시각적 디버거를 사용하여이를 확인할 수 있습니다 (또는이 화이트 셀이 나타나는 원인을 정확히 알 수 있음).

여기에 이미지 설명을 입력하십시오

흥미롭게도 이것을 알고 난 후에 .. 선택한 셀의 배경색을 지워도 여전히 작동하지 않습니다. 더 많은 연구를 수행하면이 사용자 정의 셀을 만들 때 선택 스타일을 수정해야한다는 것이 밝혀졌습니다.

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // do customization here
    }
    self.selectionStyle = UITableViewCellSelectionStyleNone;
    [self setBackgroundColor:[UIColor clearColor]];
    return self;
}