2012-05-21 36 views
8

我知道如何通過在界限內重新繪製UIImage來翻轉/反射/旋轉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 –

回答

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

這播放動畫,但視圖保持不變。如果我從超視圖中刪除視圖,那就沒有其他的東西了。動畫非常酷,但我需要實際顯示視圖的鏡像 –

1

您可以通過

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

做出任何的意見「截圖」,然後翻轉的UIImage,並添加一個UIImageView與視圖下產生的圖像。

+0

我希望用戶繼續與視圖交互,即使它反映出來。顯示UIImageView代替常規視圖是一種選擇,但它可能需要太多的用戶教育,以至於視圖何時「真實」以及何時是「圖像」 –

+0

真是一個很棒的代碼片段! 4年後仍然像魅力一樣工作 –