Почему я не могу получить доступ к свойству visibleRect CALayer в iPhone SDK? - PullRequest
2 голосов
/ 21 апреля 2009

У меня проблемы с этим:

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

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

ошибка: запрос участника visibleRect в чем-то не структура или объединение

но в документации сказано:

visibleRect Возвращает видимую область получателя, в его собственной координате пространство. (только для чтения) @property (только для чтения) CGRect visibleRect

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

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

Ответы [ 2 ]

9 голосов
/ 22 апреля 2009

Я на 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
2 голосов
/ 21 апреля 2009

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

приведенное ниже сообщение обычно означает, что с myLayer что-то не так.

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

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

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

Также попробуйте обойти свойства, вызвав [myLayer visibleRect];

...