backgroundColor colorWithPatternImage는 뷰 크기가 변경되면 반복되는 대신 늘어나게 됩니까?

StackOverflow https://stackoverflow.com/questions/1418735

  •  07-07-2019
  •  | 
  •  

문제

colorWithPatternImage를 사용하여 뷰 배경을 반복 이미지로 설정하고 있습니다.배경을 처음 설정한 후 보기 크기가 변경되면 새 크기에 대해 반복하는 대신 이미지가 늘어납니다. 이 문제를 어떻게 해결할 수 있을까요?

이것이 내가 하는 일이다:

  • viewDidLoad에서 뷰의 배경을 설정합니다.

    FrameView.BackgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"frame-repeat.png"]];

  • 서버에서 일부 정보를 가져오고, 뷰를 업데이트하고, 새 콘텐츠에 맞게 뷰의 프레임 크기를 변경합니다(일반적으로 이는 뷰를 더 크게 만드는 것을 의미합니다).

  • 동일한 코드를 사용하여 backgroundColor를 다시 설정하더라도 이제 배경 이미지가 늘어납니다.

초기 배경 설정을 수행하지 않고 서버에서 데이터를 검색하고 보기 크기를 변경한 후에만 설정하면 보기에 좋아 보입니다. 반복되고 늘어나지 않습니다.그러나 이는 데이터가 로드되는 동안 배경이 없음을 의미합니다...못생긴 것 같아요.

다른 사람이 이 문제를 겪은 적이 있나요?

어떤 도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

대답은 매우 간단합니다. 전화하세요.

[[self view] setNeedsDisplay];

프레임 크기를 변경할 때 컨트롤러에서(또는 어디에서든 가장 중요한 것은 프레임 변경 후 setNeedsDisplay 메시지를 뷰에 보내는 것입니다).그래도 문제가 해결되지 않으면 배경색을 설정해 보세요.

이것이 작동하지 않으면 자신만의 사용자 정의 보기를 구현하고 그 안에서 메서드를 재정의하세요.

- (void) drawRect:(CGRect) rect {
   CGRect myBounds = self.bounds;
   CGContextRef context = UIGraphicsGetCurrentContext();
   [[UIColor colorWithPatternImage:[UIImage imageNamed:@"frame-repeat.png.png"]]set];
   CGContextFillRect(context, myBounds);
}

그런 다음 크기를 조정한 후 setNeedsDisplay를 뷰에 보냅니다.이것은 100% 작동합니다.

이것이 도움이 되었기를 바랍니다. Pawel

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top