2009-04-21 4 views
2

У меня возникают проблемы, делая это:Почему я не могу получить доступ к свойству visibleRect для CALayer в iPhone SDK?

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

Ошибка я получаю:

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

но документация говорит:

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

Я включил QuartzCore.framework, CoreGraphics. рамки, UIKit.framework, Foundation.framework.

Итак, если это возвращает CGRect, почему он не работает? Есть идеи?

ответ

9

Я 99% уверен, что вам не хватает оператор импорта. Недостаточно просто включить рамки в свой проект.

Я просто попробовал это в совершенно новом проекте, и он работал, как ожидалось. Следующее - это то, что я добавил в 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); 
} 

выход был:

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

вы, сэр или мадам, являются святыми. – griotspeak

2

Ваш код выглядит правильно. Вы не сохраняете ничего, что может быть опасно, но технически это не так.

следующее сообщение обычно означает, что что-то не так с myLayer.

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

Вы делаете что-либо между двумя строками кода?

Осмотрите объект myLayer, убедитесь, что он правильный. Также подтвердите, что myUIImageView инициализирован и не равен нулю.

Кроме того, попробуйте обойти свойства, позвонив по телефону [myLayer visibleRect];

+0

Спасибо. Как я могу что-то там оставить? – Thanks

+0

никоим образом не выработано ... между ними нет кода, и я получаю правильный прямоугольник рамки. Я даже успешно меняю положение этого кадра. Но не может получить этот visibleRect. – Thanks