2009-07-28 73 views

回答

6

你应该能够与垂直翻转的观点:

imageView.transform = CGAffineTransformMake(
    1, 0, 0, -1, 0, imageView.bounds.size.height 
); 
+0

翻转它的对角线 – Sney 2010-03-28 22:25:18

17

创建两个UIImageView的frontImageView & backImageView

创建一个UIView的containerView包含的UIImageView

在开始显示frontImageView。

翻转后,显示backImageView

代码:

// before flip 
frontImageView = [[UIImageView alloc] initWithImage:[UIImage 
        imageNamed:@"test.png"]]; 

containerView = [[UIView alloc] initWithFrame:frontImageView.bounds]; 
containerView.center = CGPointMake(200,200); 

[self.view addSubview:containerView]; 
[containerView addSubview:frontImageView]; 

-(IBAction)flipButtonClicked:(id)sender 
{ 
    backImageView = [[UIImageView alloc] initWithImage:[UIImage 
          imageNamed:@"cardback.png"]]; 
    backImageView.center = frontImageView.center; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft 
          forView:containerView 
           cache:YES]; 
    [frontImageView removeFromSuperview]; 
    [containerView addSubview:backImageView]; 
    [UIView commitAnimations]; 
}
4
#import <QuartzCore/QuartzCore.h> 
... 
- (UIImage *) flipImageVertically:(UIImage *)originalImage direction:(NSString *)axis { 
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:originalImage]; 

UIGraphicsBeginImageContext(tempImageView.frame.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGAffineTransform flipVertical = CGAffineTransformMake(0, 0, 0, 0, 0, 0); 
if([axis isEqualToString:@"x"]) 
{ 
    flipVertical = CGAffineTransformMake(
             1, 0, 0, -1, 0, tempImageView.frame.size.height 
             ); 
} 
else if([axis isEqualToString:@"y"]) 
{ 
    flipVertical = CGAffineTransformMake(
             -1, 0, 0, 1, tempImageView.frame.size.width, 0 
             ); 
} 
CGContextConcatCTM(context, flipVertical); 

[tempImageView.layer renderInContext:context]; 

UIImage *flipedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
[tempImageView release]; 

return flipedImage; 
} 
6

我已经编辑好的声音放炮码位返回一个UIImageView的。但是,此代码不允许您同时垂直和水平翻转图像。尽管如此,修复应该相当容易。

- (UIImageView *) flipImage:(UIImageView *)originalImage Horizontal:(BOOL)flipHorizontal { 
if (flipHorizontal) { 

    originalImage.transform = CGAffineTransformMake(originalImage.transform.a * -1, 0, 0, 1, originalImage.transform.tx, 0); 
}else { 

    originalImage.transform = CGAffineTransformMake(1, 0, 0, originalImage.transform.d * -1, 0, originalImage.transform.ty); 
}  
return originalImage; } 
+0

我修改了翻转我的水平和垂直temp.BackgroundImage.transform = CGAffineTransformMake(temp.BackgroundImage.transform.a * -1,0,0,-1,temp.BackgroundImage.transform.tx,0) ; – 2014-01-14 21:23:14

3

使用@Fellowsoft代码我创建了一个方法旋转动画。

感谢Fellowsoft !!

-(void)rotateImage:(UIImageView*)image withDuration:(float)duration isHorizzonal:(BOOL)horizontal{ 
    [UIView animateWithDuration:duration/2.0 animations:^{image.transform = horizontal? 
                   CGAffineTransformMake(image.transform.a * -1, 0, 0, 1, image.transform.tx, 0) 
                   :CGAffineTransformMake(1, 0, 0, image.transform.d * -1, 0, image.transform.ty);} 
        completion:^(BOOL finished) 
            { 
            //half animation 
            [UIView animateWithDuration:duration/2.0 animations:^{image.transform = horizontal? 
                     CGAffineTransformMake(image.transform.a * -1, 0, 0, 1, image.transform.tx, 0) 
                     :CGAffineTransformMake(1, 0, 0, image.transform.d * -1, 0, image.transform.ty);} 
                     completion:^(BOOL finished) { }]; 
        }]; 
} 
2

的水平翻转

imageView.transform = CGAffineTransformScale(imageView.transform, -1.0, 1.0); 

为垂直翻转

imageView.transform = CGAffineTransformScale(imageView.transform, 1.0, -1.0);