Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CALayer在UIView中如何成为底层而不导入石英砂芯_Ios_Objective C_Uiview_Calayer - Fatal编程技术网

Ios CALayer在UIView中如何成为底层而不导入石英砂芯

Ios CALayer在UIView中如何成为底层而不导入石英砂芯,ios,objective-c,uiview,calayer,Ios,Objective C,Uiview,Calayer,我一直在读一些关于核心动画的书,强调要更好地理解CALayer,必须对CALayer有很好的理解 我感到困惑的部分可能不那么重要,但我只是想更好地理解一个事实,显然CALayer和UIView之间有着非常紧密的联系,显然每个UIView默认都有一个底层CALayer,但我的问题是 如何在每个UIView中使用CALayer而不必导入Quartz Core框架,如果假设要使用CALayer,则需要首先导入Quartz Core框架 我假设CALayer和UIView之间的这种紧密连接在每次使用UI

我一直在读一些关于核心动画的书,强调要更好地理解CALayer,必须对CALayer有很好的理解

我感到困惑的部分可能不那么重要,但我只是想更好地理解一个事实,显然CALayer和UIView之间有着非常紧密的联系,显然每个UIView默认都有一个底层CALayer,但我的问题是

如何在每个UIView中使用CALayer而不必导入Quartz Core框架,如果假设要使用CALayer,则需要首先导入Quartz Core框架

我假设CALayer和UIView之间的这种紧密连接在每次使用UIView时都会发生,或者只在用于动画时才会发生?如果是这样的话,这将回答我的第一个问题,澄清我的困惑

以下是第16章“iPhone的iOS 5编程基础”一书中的段落

UIView实例有一个附带的CALayer实例,可作为视图的图层属性访问

“因为每个视图都有一个底层,所以有一个紧密的关系 两者的融合。”

UIView始终由CALayer支持

UIView通过导入框架本身来使用Quartz核心框架。Quartz Core实际上已“加载”,但您的代码无法引用它,因为这些符号在编译时不可用于您的文件

您可以这样做(这是一种不好的做法,但说明石英磁芯实际上是可用的)

过去的情况是,为了与图层对象交互,必须导入
#import
。我不知道为什么,但从Xcode 5开始,情况似乎不再如此了。这可能与苹果如何改变他们管理预编译头的方式有关

id layer = [self.view performSelector:NSSelectorFromString(@"layer")];
NSArray *filtersOnLayer = [layer performSelector:NSSelectorFromString(@"filters")];