gpt4 book ai didi

objective-c - CALayer 委托(delegate)方法未在层托管 View 上调用

转载 作者:行者123 更新时间:2023-12-03 16:57:25 24 4
gpt4 key购买 nike

我有这个层托管 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com