2014-04-01 2 views
0

UITableViewCell의 뒤쪽에 늘어진 배경 그림을 설정하려고합니다. 그것은 공통의 질문을 여러 번 대답 그래서 나는 그것을 "표준 방식"을하고 있어요 : 나는 단순히이하려고하면UITableViewCell backgroundView가 늘어나지 않았습니다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell; 
    UIImage* bgImg; 

    bgImg = [[UIImage imageNamed:@"menu_bg_selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 1, 0)]; //top/left/bottom/right 
    cell = [tableView dequeueReusableCellWithIdentifier:@"mycell" forIndexPath:indexPath]; 
    [cell setBackgroundView:[[UIImageView alloc] initWithImage:bgImg]]; 
    return cell; 
} 

, 나는 타일 배경을 구하십시오. 여러 유사한 질문/답변을 읽은 후, 나는 시도 않았다 배경보기의

  • 강제 규모 : 배경보기 cell.backgroundView.contentMode = UIViewContentModeScaleToFill;

  • 강제로 크기 조정 : 마스크의 cell.backgroundView.clipsToBounds = YES;

  • 설정 자동 크기를 : cell.backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 힘의 배경의 프레임 크기를 시도

  • UIImageView

내 배경 그림이 부분적으로 다음 죄송합니다, 이미지를 업로드 아직 (충분하지 않은 평판을 타일, 소정 크기로 뻗어 않은 것 같습니다. ..)

  • 세로 연신 부분이고, 전체 높이를 사용하지 않는
  • 가로 연신 부분이며, 전체 폭을
  • 0123을 사용하지 않는

배경 그림은 6x3 픽셀 이미지입니다 (왼쪽에는 파란색 수직선, 아래쪽에는 어두운 회색 배경, 밝은 회색 수평선이 있음).

내가 뭘 잘못하고 있니?

도움 주셔서 감사합니다.

[편집] 사실이 문제는 UIEdgeInsetsMake 문제로 보이지 않습니다. bgImg = [UIImage imageNamed : @ "menu_bg_selected.png"]를 사용하는 경우; 배경 이미지가 여전히 전체 셀 배경을 채우지 않습니다.

+0

cell.backgroundView.contentMode = UIViewContentModeTop; –

+0

자, 내가 resizingMode 인자를 사용해야한다 : 'bgImg = [[UIImage imageNamed : @ "menu_bg_selected.png"] resizableImageWithCapInsets : UIEdgeInsetsMake (0, 5, 1, 0) resizingMode : UIImageResizingModeStretch];' – Noth

+0

I ' 가능한 한 빨리 전체 대답으로 내 자신의 질문에 대답 해 줄 것입니다. 여러분의 제안에 감사드립니다. – Noth

답변

0

나는

UIEdgeInsetsMake(0, 5, 1, 0) 

은 기본적으로 당신은 내가 신축성 이미지를 싶은 말은하지만 난 결론은 스트레칭하지 둘 다 왼쪽 경계하지 않으에서 문제가 온다 생각합니다. 그건 말이 안되요. 가장자리 인셋은 일부 신축성 부품을 남겨 두어야합니다. 예를 들어 이미지가 6x3 인 경우 다음을 사용할 수 있습니다.

UIEdgeInsetsMake(1, 2, 1, 2) 

그러나 이미지를 다시 디자인 할 수 있습니다.

+0

사실 나는 이것이 "왼쪽에 5 픽셀을, 아래에 픽셀을 늘리지 마십시오"라고 생각합니다. 배경의 나머지 부분이 늘어나게되면 아래쪽과 왼쪽의 "비 신축성"영역이 바둑판 식으로 배열됩니다. 내가 틀렸어? 어쨌든 나는 당신의 제안을 시도했다. 부분적인 수직 스트레치가 사라지고 이미지가 스트레치없이 완전히 바둑판 식으로 배열되었다. – Noth

+0

나는 네가 틀렸다고 믿는다.이 기능을 사용하면 그림이 늘어나지 않고 타일을 만들어야한다. 당신이 신축성을 원한다면 신축성있는 부분 (뚜껑이없는 의미)을 남겨 두어야한다고 생각합니다. 제가 방금 편집 한 코드로 시도해 보셨습니까? – streem

+0

예, 방금 시도했습니다! 그것은 문제를 해결하지, 배경 이미지가 다르게 뻗어 있지만 여전히 전체 셀 배경을 채우는 doest ... – Noth

0

이 코드는 UIImage에서 작동합니다.

UIIMage *bgImage = [[UIImage imageNamed:@"menu_bg_selected.png"] stretchableImageWithLeftCapWidth:15 topCapHeight:15]; 
+0

해결하지 못한 것 같습니다. 내 배경 이미지는 6x3 픽셀이므로 위쪽 여백과 왼쪽 여백을 15로 설정하는 것이 좋습니다. – Noth

+0

여백을 변경하고 – Dipin

+0

을 확인하십시오. Cap 값에 문제가 없었습니다. iOS 5.0 이후 stretchableImageWithLeftCapWidth는 사용되지 않습니다. – Noth

0

좋아요, 알 겠어요!

문제는 내 배경 그림이 전체 셀을 채우기 위해 부분적으로 만 뻗어서 바둑판 식으로 배열되어 있다는 것입니다 (UIEdgeInsetsMake 매개 변수가 무엇이든).

resizingMode 인수을 지정하여 resizableImageWithCapInsets 및 을 사용하여 성공했습니다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell; 

    UIImage* bgImg; 
    bgImg = [[UIImage imageNamed:@"menu_bg_selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 1, 0) resizingMode:UIImageResizingModeStretch]; 
    cell = [tableView dequeueReusableCellWithIdentifier:@"mycell" forIndexPath:indexPath]; 
    [cell setBackgroundView:[[UIImageView alloc] initWithImage:bgImg]]; 
    return cell; 
} 

귀하의 제안에 감사드립니다.

관련 문제