我无法做到这一点:
CALayer *myLayer = myUIImageView.layer; //works, no error from compiler
CGRect visRect = myLayer.visibleRect; //fat error, see below
我得到的错误是:
错误:请求会员 “visibleRect”中的某些东西不是 结构或联盟
但文档说:
的visibleRect 返回可见区域 接收器,在它自己的坐标 空间。 (只读)@property(readonly) CGRect visibleRect
我已经收录了QuartzCore.framework,CoreGraphics.framework,UIKit.framework,Foundation.framework。
因此,如果返回CGRect,为什么它不起作用?有什么想法吗?
答案 0 :(得分:9)
我99%肯定你错过了import语句。仅仅在项目中包含框架是不够的。
我刚刚在一个全新的项目上试过这个,它按预期工作。以下是我添加到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
答案 1 :(得分:2)
您的代码看起来是正确的。你没有保留任何可能危险的东西,但技术上并没有错。
以下消息通常意味着myLayer出现问题。
error: request for member 'visibleRect' in something not a structure or union
你在两行代码之间做了什么吗?
检查myLayer对象,确保它是正确的。另外,确认myUIImageView已初始化,而不是nil。
此外,请尝试通过调用[myLayer visibleRect];