2012-05-21 2 views
8

UIImage를 그 경계 내에서 다시 그리는 방법으로 뒤집기/반사/회전하는 법을 알고 있습니다.iPhone iOS UIView를 플립/반사하는 법은 무엇입니까?

- (IBAction)reflectImageView:(UIImageView)imageView { 

    UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 0.0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextScaleCTM(context, 1.0, -1.0); 
    CGContextTranslateCTM(context, 0.0, -imageView.bounds.size.height); 


    [imageView.layer renderInContext:context]; 
    imageView.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

} 

하지만 어떻게 내가 어떤 UIView의에 대해 "플립/반영"효과를 만들려면 어떻게해야합니까는 바람직하게는 이전과 같은 위치에있는 센터의 유지?

감사합니다.

+0

질문은 이미지를 회전하는 방법에 대한 내 대답입니다. P +1 +1 –

답변

4
[UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.activeView cache:YES]; 
    //  [self.activeView removeFromSuperview]; 
    [UIView commitAnimations]; 

    NSNumber* isReflected = [self.activeView.attributedView.attributes valueForKey:kIsReflected]; 
    if(isReflected.boolValue) 
    { 
     self.activeView.transform = CGAffineTransformMakeScale(1,1); 
     [self.activeView.attributedView.attributes setValue: [NSNumber numberWithBool:NO] forKey:kIsReflected]; 
    }else { 
     //do reflection 
     self.activeView.transform = CGAffineTransformMakeScale(-1,1); 
     [self.activeView.attributedView.attributes setValue: [NSNumber numberWithBool:YES] forKey:kIsReflected]; 
    } 

위 코드는 UIView 애니메이션에 사용됩니다. 다양한 유형의 애니메이션에 대한 옵션을 얻을 수있는 곳입니다.

+0

이것은 애니메이션을 재생하지만보기는 동일하게 유지됩니다. 내가 superview에서보기를 제거하면, 그것의 장소에 아무것도 남아 있지 않습니다. 애니메이션은 매우 멋지지만 실제로 뷰의 대칭 이미지를 표시해야합니다. –

1

당신은

UIGraphicsBeginImageContext(self.view.frame.size); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

에 의해 모든보기의 "스크린 샷"을 확인하고있는 UIImage 뒤집어보기 아래의 결과 이미지로있는 UIImageView를 추가 할 수 있습니다.

+0

반영된 후에도 뷰와 계속 상호 작용하고 싶습니다. 일반보기 대신 UIImageView를 표시하는 것은 옵션이지만보기가 "실제"이고 "이미지"인 경우 너무 많은 사용자 교육이 필요할 수 있습니다. –

+0

멋진 스 니펫! 4 년 후 여전히 매력처럼 작동합니다. –

관련 문제