2010-06-13 4 views
0

표준 UIViewController/UIView 설정이있는 iPad 앱이 있습니다. 모든 회전이 허용됩니다. (타일 256 * 256 픽셀) 배경으로 UIView의 약간의 타일 이미지를 그립니다타일 된 배경 이미지로 UIView 회전시 시각적 인 결과

- (void)drawRect:(CGRect)rect 
{ 
    [[UIImage imageNamed: @"Background.png"] drawAsPatternInRect: rect]; 
} 

내 아이 패드를 켜면 나는 원래 방향의 이미지 패턴이 이 맞게을 조정하는 회전 중에 것을 알 수 있습니다 새로운 방향. 그런 다음 - 애니메이션이 완료된 직후 - 보기는 축척되지 않은 최종 구성으로 배경 패턴을 다시 그립니다. 스케일 된 패턴에서 스케일되지 않은 패턴으로 전환하는 것은 약간 추한 것 같습니다.

배경 무늬의이 엇갈림을 피할 수있는 방법이 있습니까?

답변

2

패턴 이미지를 배경 "색"으로 사용하지 않는 이유는 무엇입니까? 이렇게하면 자동으로 바둑판 패턴이 만들어지고 drawRect()로 스턴트가 발생하지 않습니다. 예를 들어

UIImage *backgroundTile = [UIImage imageNamed: @"Background.png"]; 
UIColor *backgroundPattern = [[UIColor alloc] initWithPatternImage:backgroundTile]; 
[myView setBackgroundColor:backgroundPattern]; 
[backgroundPattern release]; 
+2

당신의 솔루션을 시도 할 것이지만 나 자신도 솔루션을 알아 냈습니다 : viewController의 'willRotateToInterfaceOrientation : duration'메서드 내에서 'setNeedsDisplay'를 사용하여 다시 그리기 뷰를 표시하면 iPad를 돌린 직후 뷰가 다시 그려지지만 회전 애니메이션이 완료되기 전에 즉, 애니메이션의 시작 부분에서 배경 이미지가 늘어나고 애니메이션이 진행되는 동안 부드럽게 풀립니다. 이것은 인간의 눈에는 더 이상 눈에 띄지 않습니다. – Halbanonym

2

단순히 넣어

[MYVIEW의 setBackgroundColor [UIColor colorWithPatternImage [있는 UIImage imageNamed "Background.png"@]];

관련 문제