2009-07-28 25 views

Respuesta

6

Usted debe ser capaz de voltear la vista vertical con:

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

que lo voltea diagonal – Sney

17

crear dos UIImageView frontImageView & backImageView

crear una UIView containerView para contener UIImageView

Mostrar frontImageView en el principio.

después del tirón, muestran backImageView

código:

// 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

He editado código Sound Blaster un poco para devolver un UIImageView. Sin embargo, este código no le permite voltear la imagen vertical y horizontalmente al mismo tiempo. Sin embargo, una solución para esto debería ser bastante fácil.

- (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

Modifiqué para voltear la mía horizontal y vertical temp.BackgroundImage.transform = CGAffineTransformMake (temp.BackgroundImage.transform.a * -1, 0, 0, -1, temp.BackgroundImage.transform.tx, 0) ; –

3

Usando el código de @Fellowsoft tengo crear un método de rotación de animación.

gracias a 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

de forma horizontal flip

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

para voltear verticalmente

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