2010-05-14 5 views
1

J'ai implémenté avec succès une application qui fonctionne aussi bien sur ipad que sur iphone. Dans ce que j'ai fourni l'option à l'utilisateur d'envoyer la capture d'écran de l'application en pièce jointe. Même cela fonctionne bien. Mais mon code prend une capture d'écran quelle que soit l'orientation. L'image que je reçois est toujours en mode portrait. Je veux prendre la capture d'écran en fonction de l'orientation de l'ipad/iphone et envoyer l'image en pièce jointe. J'utilise le code suivant pour prendre la capture d'écran.application iphone/ipad - prise d'écran

UIGraphicsBeginImageContext(screenWindow.frame.size); 
[screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Répondre

2

Il est une catégorie mis en œuvre par Hardy Macia à:

http://www.catamount.com/forums/viewtopic.php?f=21&t=967

Il a un tas de catégories sur UIImage. celui que vous voulez être à l'aide est:

UIimage* newImage = [imageToBeRotated imageRotatedByDegrees:90.0]; 

Votre angle dépendra de l'orientation actuelle de votre appareil. Utilisation:

[[UIApplication sharedApplication] statusBarOrientation] 

pour obtenir l'orientation de votre appareil.

Espérons que cela aide.

0

Il existe peut-être une vue de niveau supérieur que vous pouvez afficher en plus de la fenêtre qui a déjà été pivotée. Si vous affichez la barre d'état, essayez d'obtenir la vue d'ensemble de celle-ci. Sinon, quelque chose comme cela pourrait fonctionner:

CGRect frame = screenWindow.frame; 

if (isLandscape) { 
    CGFloat t = frame.size.width; 
    frame.size.width = frame.size.height; 
    frame.size.height = t; 
} 

UIGraphicsBeginImageContext(frame.size); 

if (isLandscape) { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextRotateCTM(context , M_PI_2); 
    CGContextTranslateCTM(context , (frame.size.width - frame.size.height) * 0.5 , 
    (frame.size.height - frame.size.width) * 0.5); 
} 

... 

Vous aurez probablement de bricoler avec CGContextTranslateCTM mais il devrait être proche de celui.

Questions connexes