作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个层托管 View ,其初始化如下:
// Init layers
self.wantsLayer = YES;
_hostedLayer = [CALayer layer];
_hostedLayer.delegate = self;
self.layer = _hostedLayer;
奇怪的是,委托(delegate)方法updateLayer
没有被调用。
当我注释掉最后 3 行时,它确实被调用了。
这里出了什么问题?
提示:是的,我已覆盖 wantsUpdateLayer
并返回 YES
。
最佳答案
当 View 请求图层时,默认情况下它会获得 CALayer 的特殊私有(private)子类,该子类具有额外的功能。虽然我从 10.7 开始就没有这样做过,但在那些日子里,这是一个要么全有要么全无的提议——你要么使用 View 获得的默认(私有(private))层,并使用 AppKit 约定进行绘制,要么你制作自己的 CALayer绘图全部由 CALayer 本身或委托(delegate)方法处理:
- (void)displayLayer:(CALayer *)layer;
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;
因此,我猜在您的情况下,后两个方法将在您的 View 上调用,但不会在 View 特定的 -updateLayer 上调用。
关于objective-c - CALayer 委托(delegate)方法未在层托管 View 上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21078009/
我是一名优秀的程序员,十分优秀!