development

UITableViewCell 배경색이 작동하지 않는 이유는 무엇입니까 (인터페이스 빌더에서 설정)?

big-blog 2020. 12. 29. 08:22
반응형

UITableViewCell 배경색이 작동하지 않는 이유는 무엇입니까 (인터페이스 빌더에서 설정)?


UITableViewCell 배경색이 작동하지 않는 이유는 무엇입니까 (인터페이스 빌더에서 설정)?

일부 검색에서 UITableViewController의 사용자 지정 하위 클래스에 설정된 다음 코드가 작동한다는 것을 알 수 있습니다 (아래 참조).

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor redColor];
}

하지만 인터페이스 빌더에 TableViewCell에 대한 배경색 설정이있는 이유를 이해하고 싶습니다. 효과적으로 작동하지 않는 것 같습니다.


조금 늦었지만 방금이 문제가 발생했습니다 ... contentView작업에 배경색을 설정하십시오 .

cell.contentView.backgroundColor = [UIColor redColor];

나를 위해 일한 것은 UITableViewCell의 배경보기로 설정할 UIView 개체를 만드는 것입니다. cellForRowAtIndexPath에서 :

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIView* bgview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
bgview.opaque = YES;
bgview.backgroundColor = [UIColor orangeColor];
[cell setBackgroundView:bgview];

UITableViewCell 자체의 배경색을 설정하려는 것은 당신이해야 할 일이 아닙니다. 테이블 셀에는 액세스 할 수있는 5 개의 유용한보기 모음이 있으며 그 중 하나는 backgroundView.

추천 자료 :

http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

그리고:

http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html


Apple 문서 tableView:willDisplayCell:forRowAtIndexPath:에 따라 tableView:cellForRowAtIndexPath:메서드 대신 항상 셀에 대한 변경 사항을 제공해야합니다 .

이 작품!


[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView setBackgroundColor:[UIColor redColor]];

셀 색상을 정의하기 전에 backgroundViewnull 인지 확인하십시오.

cell.backgroundView = nil;
cell.backgroundColor = [UIColor redColor];

이것은 간단하고 작동합니다. 인터페이스 빌더에서 동일한 차원의 UITableViewCell에 뷰 개체를 추가하고 해당 뷰 안에 컨트롤을 배치합니다. 그런 다음 원하는 배경색을 얻습니다.

편집 : 여기에 동의해야하는 이유가 있습니다. 단지 충격을 받았습니다. 일반 사각형보기를 사용하면 내용보기라는 매우 명확하게 표시된 타원형 사각형이 표시됩니다. 따라서 할 수있는 일은 IB에서 UITableViewCell의 콘텐츠 뷰를 설정하는 것이며 콘텐츠 뷰의 배경색 속성을 설정해도 테이블의 색상 변경이 생성되지 않습니다. 문서에서 말했듯이 UITableViewCells는 UITableView를 조정하고 조작하는 측면에서 많은 부분이 뒤에서 진행되는 복잡한 짐승입니다.


테이블 뷰를 선택하고 배경을 예를 들어 빨간색으로 설정하면 전체 테이블이 빨간색이됩니다. 아마도 당신은 테이블이나 다른 것을 연결하지 않았을 것입니다

도움이 되었기를 바랍니다


(이 시도)

Apple의 IB 디자인은 일반적으로 여러 종류의 구성 요소에 적용 할 수 있으며 고도로 기술적 인 사용자 (개발자)를 대상으로합니다. 따라서 각 구성 요소 / 상황 유형에 맞게 인터페이스를 완전히 사용자 정의하도록 설계되지 않았습니다 (응용 프로그램으로). 따라서이 경우 겉보기에 배경색을 설정하는 기능이 다소 오해의 소지가있는 경우입니다.


그렇지 않으면 setBackgroundColor를 사용하십시오.

self.table.separatorColor=[UIColor whiteColor];
[table setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];

Interface Builder에서 부분적으로 수행 할 수 있습니다 (최근 Xcode에 추가되었을 가능성이 있음).

  • 스토리 보드의 문서 개요에서 셀을 확장하고 "컨텐츠보기"를 선택합니다.
  • Attributes Inspector에서 콘텐츠보기 배경색 설정
  • 셀에서 각 콘텐츠 항목을 선택하고 배경색을 ClearColor로 설정합니다.

그래도 액세서리 배경을 설정하는 방법은 없습니다.


나는 또한이 문제를 얻었습니다. IB에서는 셀을 선택할 때 셀의 배경색을 변경할 수 있습니다. 이것은 정확하지 않습니다. 스토리 보드 왼쪽에있는 문서 개요로 이동하여 셀 내부의 콘텐츠보기를 선택해야합니다. 콘텐츠보기의 배경을 변경합니다. 이제 올바른 셀 색상을 얻을 수 있습니다.


-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
UIView *view = [[UIView alloc] init];
[view setBackgroundColor:[UIColor redColor]];
[cell setSelectedBackgroundView:view];}

이 방법으로 색상을 변경해야합니다.


나를 위해 작동하는 이것을 시도하십시오.

- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cell setBackgroundColor:[UIColor clearColor]];
    tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]];
}

참조 URL : https://stackoverflow.com/questions/5166747/why-doesnt-uitableviewcell-background-color-work-set-in-interface-builder

반응형