我一直在阅读有关核心动画的内容,并强调要更好地理解CALayer是必须的,以便更好地理解它。
我很困惑的部分可能并不那么重要,但我只想更好地理解这一事实显然CALayer和UIView之间存在非常紧密的联系,显然每个UIView都有一个潜在的CALayer默认情况下,我的问题是......
如果想要使用CALI,如何在每个UIView中使用CALayer而不必导入Quartz Core框架,如果你想使用CALayer,你需要先导入Quartz Core框架吗?
我假设每次使用UIView时都会发生CALayer和UIView之间的这种紧密连接,或者只有在用于动画时才会发生这种情况?如果是这种情况,这将回答我的第一个问题并澄清我的困惑。
以下是第16章“编程iOS 5基础知识”一书中的段落。
“UIView实例有一个附带的CALayer实例,可以作为视图的图层属性访问。”
“因为每个视图都有一个底层,所以紧张 两者之间的整合。“
答案 0 :(得分:2)
UIView 始终由CALayer支持。
UIView通过导入框架本身来使用Quartz Core框架。 Quartz Core实际上是“已加载”但您的代码无法引用它,因为这些符号在编译时不可用于您的文件。
你可以做这样的事情(这是不好的做法,但说明Quartz Core实际上是可用的)
id layer = [self.view performSelector:NSSelectorFromString(@"layer")];
NSArray *filtersOnLayer = [layer performSelector:NSSelectorFromString(@"filters")];
以前是 到#import <QuartzCore/QuartzCore.h>
以便与图层对象进行交互的情况。我不知道为什么,但是从Xcode 5开始,似乎不再是这种情况了。这可能与Apple如何改变他们管理预编译头文件的方式有关。