1

아래 방법론을 사용하여 배경 이미지를 설정하고 있습니다. 내 장치를 회전 할 때 배경이 반복됩니다. 이는 이미지가 아니기 때문에 의미가 있습니다. 이것이 내가 배경 이미지를 설정하는 방법이라면 오리엔테이션 변경을 어떻게 처리합니까?UIView에서 배경 이미지 방향을 처리하는 방법

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
    self.view.backgroundColor = background; 
    [background release]; 
} 

답변

6

이 개념을 이해하는 데 다소 시간이 걸렸습니다. 나는 같은 이미지의 초상화와 풍경을 만들고 싶지 않았다. 여기서 핵심은 CGAffineTransformMakeRotation이 UIImageView의 원래 상태 또는 UIView에서 회전한다는 것입니다. 이것은 배경 이미지에 방향이 있다고 가정합니다. 예 : UIImageView를 그대로 유지하고 다른 객체는 정상적인 방향 변경 이벤트로 동작해야합니다.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
           duration:(NSTimeInterval)duration { 

    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) { 
     backgroundImage.transform = CGAffineTransformMakeRotation(M_PI/2); 
    } 
    else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){ 
     backgroundImage.transform = CGAffineTransformMakeRotation(-M_PI/2); 
    } 
    else { 
     backgroundImage.transform = CGAffineTransformMakeRotation(0.0); 
    } 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //set the UIImageView to current UIView frame 
    backgroundImage.frame = self.view.frame; 
} 
0

정확하게 이해하면 방향을 바꿀 때마다 배경이 생성되거나 덮어 쓰기됩니다. 기본적으로 backgroundColornil입니다. 이것을 확인해도 상관 없으면 값을 설정하십시오. 그것의 당신은 모두 수평 및 수직 대신 당신이 [...: colorWithPatternImage:...];을 사용하고 방향이 뷰의 배경으로 변경 될 때를 설정할 수 있습니다 할당에 대한 두 이미지를 가지고 가야

if (self.view.backgroundColor == nil){ 
    //set the new values here 
} 
0

을 좋아합니다.

해피 iCODING ...

+0

같은 풍경을 피하고 싶습니다. 이 작업을 수행하는 적절한 방법 UIImageView 사용하고 있습니까? – docchang

+1

배경 이미지를 고정시키고 나머지 UI를 회전시키는 방법이 있습니까? – docchang

+0

예, 이미지 뷰를 사용해보세요. 효과가있을 것입니다. 하지만 볼 당 프레임을 설정해야합니다 .. 내가 원하는 말을하고 싶습니다 .. –