2009-09-12 12 views

Répondre

13

Définit le point d'ancrage de la couche de la vue, qui est en coordonnées locales-vues de 0 à 1. Autrement dit, la partie supérieure gauche est 0,0 et la partie inférieure droite est 1,1.

Par exemple, la valeur par défaut est de tourner autour du centre:

imageView.layer.anchorPoint = CGPointMake(.5,.5); 

Si vous souhaitez faire pivoter autour de l'origine:

imageView.layer.anchorPoint = CGPointMake(0,0); 

Ou du bord droit:

imageView.layer.anchorPoint = CGPointMake(1,.5); 
+0

Pour les personnes qui utilisent cette méthode, notez que vous devez inclure le cadre Quartz2D dans votre projet et la classe pour être en mesure d'accéder aux propriétés de la couche . – Dimitris

+0

USELESS! D'accord, vous avez changé anchorPoint. Mais par cette action, vous avez également déplacé votre vue/couche. Alors le répareriez-vous? –

4

Si vous créez un projet en utilisant l'application "View-based Application" par défaut dans Xcode, ajoutez simplement ce code à votre -vi ewDidLoad dans le contrôleur principal de vue qu'il crée:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    CABasicAnimation *rotationAnimation = [CABasicAnimation 
         animationWithKeyPath:@"transform.rotation.z"]; 

    [rotationAnimation setFromValue:DegreesToNumber(0)]; 
    [rotationAnimation setToValue:DegreesToNumber(360)]; 
    [rotationAnimation setDuration:3.0f]; 
    [rotationAnimation setRepeatCount:10000]; 

    [[[self view] layer] addAnimation:rotationAnimation forKey:@"rotate"]; 
} 

Cela faire pivoter la vue autour de l'axe x (centre par défaut). Vous pouvez simplement définir le contenu de cette vue (par exemple [[self view] setContents: image] où l'image est une image que vous chargez en utilisant UIImage).

Voici mes fonctions auxiliaires pour la conversion des degrés en radians.

CGFloat DegreesToRadians(CGFloat degrees) 
{ 
    return degrees * M_PI/180; 
} 

NSNumber* DegreesToNumber(CGFloat degrees) 
{ 
    return [NSNumber numberWithFloat: 
      DegreesToRadians(degrees)]; 
} 

Espérons que cela aide.

1

imageView.layer.anchorPoint = CGPointMake(.5,.5); pour obtenir ce dont vous avez besoin d'importer fichier suivant d'en-tête

#import <QuartzCore/QuartzCore.h> 
+0

NE FONCTIONNE PAS! Rompt la position correcte –

Questions connexes