programing

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

abcjava 2023. 4. 21. 20:04
반응형

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

는 이 이 셀클래스는 이 입니다.UITableViewCell테이블 뷰에는 배경 이미지가 포함되어 있기 때문에 셀의 배경을 투명하게 하고 싶습니다.i 이전 버전에서는 .OS7 の os os os os os os 。

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


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

Apple DOC가 밝힌 (UITable View Cell 클래스 레퍼런스):

iOS 7에서는 기본적으로 셀의 배경이 흰색이지만 iOS 이전 버전에서는 셀이 둘러싸인 테이블 뷰의 배경색을 상속합니다.셀의 배경색을 변경하려면 테이블 뷰 위임자의 테이블뷰:willDisplayCell:forRowAtIndexPath: 메서드에서 변경합니다.

따라서 투과적인 배경을 가진 셀을 표시하려면 다음과 같이 테이블뷰 컨트롤러에 위임 메서드를 구현해야 합니다.

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

참고 사항:@null은 "...인터페이스 빌더에 버그가 있는 것 같다"고 말했지만, 버그가 있는지는 확실히 알 수 없지만, 그의 코멘트가 몇 개의 표를 얻은 것 같습니다.따라서 IB를 사용하면 문제가 발생할 수 있습니다. : )

조금 조사해보니 셀 backgroundColor는 Affectance system으로 설정되어 있더군요.따라서 어플리케이션의 모든 셀이 명확한 배경을 가지고 있는 경우 가장 쉬운 해결책은 다음과 같습니다.

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

또, 배경은 달라도, 디폴트로는 선명한 컬러가 가장 편리할 것 같습니다.

셀에 쓰기 ForRowAt반환 셀 이전의 IndexPath 메서드.

cell.backgroundColor = [UIColor clearColor];

" " " "UITableViewCell입니다.iOS 7 os os os os 。

'어울릴 수 없다'를 돼요.backgroundColor코드의 어딘가에 속합니다.예를 들어 셀을 새로 작성한 후 설정합니다.

cell.backgroundColor = [UIColor clearColor];

실제로 UITableView의 배경색이 clear로 설정되어 있지 않아 문제가 발생하였습니다.UITableViewCell의 배경색을 지우도록 변경했는데도 여전히 흰색인 경우 UITableView의 배경색이 지우도록 설정되어 있는지 확인합니다.

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

인스위프트

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

【iOS】★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」 8의 iOS 8의 Interface Builder iPhone입니다.whiteColor하려면 , 「 ★★★★★★★★★★★★★★★★★★★★★★★★」cellForIndexPath" " " " " , " :

cell.backgroundColor = cell.backgroundColor

그리고 효과가 있을 거야이것이 바로 제가 코드 자체가 거의 bullsh*t이기 때문에 버그라고 말한 이유입니다만, 동작하고 있습니다.

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

XCode 5.1.1, iOS 7.1에서는 위의 어느 것도 동작하지 않았습니다.

Interface Builder를 프로토타입 셀과 함께 사용하는 경우 프로토타입 셀을 선택한 다음 View 섹션의 Attribute Selector에서 Background 폼 기본값을 Clear Color로 변경합니다.

여기에 이미지 설명 입력

이거 잘 되는 것 같아.위의 코드 변경도 필요하지 않습니다.이것은 순수한 IB 솔루션입니다.

받아들여진 답변으로는 문제가 해결되지 않았다.어쩔 수 없었어요

  1. 인터페이스 빌더에서 테이블뷰를 선택합니다.그런 다음 속성 검사기의 View 섹션에서 Background를 transparent(0% 불투명도)로 설정합니다.

여기에 이미지 설명 입력

  1. 테이블의 데이터 원본 클래스 cellForRowAt에서IndexPath 메서드:

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
        reuseIdentifier:CellIdentifier];
    cell.backgroundColor = [UIColor clearColor]; //Make cell transparent
    

Swift 1.2 솔루션:

다음과 같이 셀 배경색에 대한 명확한 정의를 추가합니다.

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

    // Configure the cell...
    cell.backgroundColor = UIColor.clearColor()

    return cell
}

는 내설을 설정한다.cell.backgroundColor = cell.contentView.backgroundColor;tableView:willDisplayCell:forRowAtIndexPath: ★★★★★★★★★★★★★★★★★」tableView:cell:forRowAtIndexPath:그 일을 해냈지

이는 Interface Builder에서 contentView의 배경색을 원하는 대로 설정했기 때문입니다.

UI 객체를 셀에 추가할 때 Xcode 5/IOS 7은 셀 내의 모든 요소의 슈퍼 뷰가 되는 새로운 "콘텐츠 뷰"를 추가합니다.셀의 배경색을 설정하려면 내용 보기의 배경색을 설정하십시오.위의 솔루션은 나에게 효과가 없었지만, 이 솔루션은 나에게 효과가 있었다.

비슷한 문제가 있어서 어쩔 수 없이

  1. 파란색을 선택으로 설정합니다Style 및
  2. 이것을 코드에 추가하여 수정하다

    override func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    
      var bgColorView: UIView = UIView()
      bgColorView.backgroundColor = UIColor(red: (76.0 / 255.0), green: (161.0 / 255.0), blue: (255.0 / 255.0), alpha: 1.0)
      bgColorView.layer.masksToBounds = true
      tableView.cellForRowAtIndexPath(indexPath)!.selectedBackgroundView = bgColorView
      return true
    }
    

또한 색상 코드를 사용하여 UITableViewCell을 수익성 있게 만들 수도 있습니다.

[cell setBackgroundColor:[self colorWithHexString:@"1fbbff"]];

색상 코드 방법을 적용하기 위한 코드는 다음과 같습니다.

-(UIColor*)colorWithHexString:(NSString*)hex
{
    NSString *cString = [[hex stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];


    if ([cString length] < 6) return [UIColor grayColor];

    if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];

    if ([cString length] != 6) return  [UIColor grayColor];

    NSRange range;
    range.location = 0;
    range.length = 2;
    NSString *rString = [cString substringWithRange:range];

    range.location = 2;
    NSString *gString = [cString substringWithRange:range];

    range.location = 4;
    NSString *bString = [cString substringWithRange:range];

    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];

    return [UIColor colorWithRed:((float) r / 255.0f)
                         green:((float) g / 255.0f)
                          blue:((float) b / 255.0f)
                         alpha:1.0f];
}

언급URL : https://stackoverflow.com/questions/18878258/uitableviewcell-show-white-background-and-cannot-be-modified-on-ios7

반응형