2009-04-21 9 views
2

Je ne parviens pas à faire ceci:Pourquoi ne puis-je pas accéder à la propriété visibleRect d'un CALayer dans le SDK iPhone?

CALayer *myLayer = myUIImageView.layer; //works, no error from compiler 
CGRect visRect = myLayer.visibleRect; //fat error, see below 

L'erreur que je reçois est:

error: request for member 'visibleRect' in something not a structure or union

mais la documentation dit:

visibleRect Returns the visible region of the receiver, in its own coordinate space. (read-only) @property(readonly) CGRect visibleRect

J'ai inclus QuartzCore.framework, CoreGraphics. cadre, UIKit.framework, Foundation.framework. Donc, si cela renvoie un CGRect, pourquoi cela ne fonctionne-t-il pas? Une idée?

Répondre

9

Je suis 99% sûr que vous manquez la déclaration d'importation. Il ne suffit pas d'inclure le framework dans votre projet.

J'ai juste essayé ceci sur un tout nouveau projet et cela a fonctionné comme prévu. Ce qui suit est ce que j'ai ajouté au ViewController.

#import <QuartzCore/QuartzCore.h> 

...

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CALayer *test_layer = self.view.layer; 
    CGRect test_rect = test_layer.visibleRect; 
    NSLog(@"%f, %f", test_rect.origin.x, 
      test_rect.size.width); 
} 

sortie était:

2009-04-21 17:53:55.999 Throwaway[72422:20b] 0.000000, 320.000000 
+0

vous, monsieur ou madame, êtes un saint. – griotspeak

2

Votre code semble correct. Vous ne retenez rien, ce qui pourrait être dangereux, mais techniquement, ce n'est pas faux. Le message ci-dessous signifie généralement que quelque chose ne va pas avec myLayer.

error: request for member 'visibleRect' in something not a structure or union

Faites-vous quelque chose entre les deux lignes de code?

Inspectez l'objet myLayer, assurez-vous qu'il est correct. Confirmez également que myUIImageView est initialisé et non nul.

En outre, les propriétés essayez de le contourner, en appelant [myLayer visibleRect];

+0

Merci. Comment pourrais-je retenir quelque chose là-bas? – Thanks

+0

pas de façon élaborée ... il n'y a pas de code entre et j'obtiens un rectangle de cadre correct. Je modifie même la position de cette image avec succès. Mais ne peut pas obtenir ce visibleRect. – Thanks

Questions connexes