2011-05-07 3 views
0

내 아이폰 앱에서 view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"IndexCard.png"]];UIView 배경 이미지가 부숴졌습니다.

를 통해 생성 된 바둑판 식 배경 이미지가있는 UIView가 있습니다. iOS3.1 장치에서보기의 크기가 조정되면 배경 이미지가 부숴집니다. 즉, 각 타일의 높이가 줄어 듭니다. 대신 각 타일을 동일한 크기로 유지하고 새로운보기 크기에 따라 조정할 반복 횟수를 유지하고 싶습니다. 배경을 지운 다음 다시 설정하면 문제가 해결되지만 문제는 특정 비효율적 인 솔루션처럼 보입니다. iOS4.3 시뮬레이터에서 제대로 작동합니다.

원본 이미지 - 12 행 :

The original image

보기 크기를 조정할 때 다음과 같은 내용이 표시됩니다. 여전히 12 줄이 있습니다.

What I'm seeing - the image is squashed

내가 정말로보고 싶은 것은 - 배경은 5 줄로 자릅니다.

What I want to see - the image cropped

어떤 아이디어입니까?

답변

0

view.contentMode = UIViewContentModeRedraw; 
// instead of the default UIViewContentModeScaleToFill 
1

보기의 backgroundColor 속성이보기를 그리는 데 기본이되는 CALayer에 색 (또는 패턴)을 지정하고 있습니다. 보기의 layer 속성을 처리하여 CALayer의 속성을 변경할 수 있습니다.

수신기의 내용 은 그 범위 내에 위치하는 방법을 결정합니다 : 그 contentsGravity라는 속성이 있다고 볼 수있는 CALayer Class Reference 통해 찾고

.

contentsGravity 수있는 값이 "Contents Gravity Values"에 도시되어

그것은 것을 나타낸다. 기본값은 kCAGravityResize입니다.

이미지가 왜 그런 것처럼 스쳐 지나고 있는지 설명합니다. 기본적으로 이미지의 크기가 조정됩니다. 다른 내용 중력에 모습을 가지고가는 것은 당신을 위해 가능성이 가장 적합한 몇 가지 옵션이 있습니다 값 :

kCAGravityTop

: 내용 수평 경계 사각형의 상단 가장자리에 중심.

kCAGravityCenter : 내용이 경계 사각형의 가운데에 가로 및 세로로 배치됩니다.

'kCAGravityBottom': 콘텐츠가 경계 사각형의 아래쪽 가장자리에 수평 가운데에 배치됩니다.

사용자가 설정 한 것 때문에 내가 kCAGravityTop은 당신이 찾고있는 아마 무엇을 추측 거라고보기의 레이어의 contentsGravity 같은 :

: 나는 훨씬 더 간단한 해결책을 발견
view.layer.contentsGravity = kCAGravityTop;