gpt4 book ai didi

objective-c - CALayer 不呈现内容

转载 作者:行者123 更新时间:2023-12-01 19:21:46 24 4
gpt4 key购买 nike

这个难倒我。我有一个 CALayer我在 UIViewController 中创建的的viewDidLoad方法是这样的:

- (void)viewDidLoad {

[super viewDidLoad];

UIImage* img = [UIImage imageNamed:@"foo.png"];

_imageLayer = [[CALayer alloc] init];

_imageLayer.bounds = CGRectMake( 0, 0, img.size.width, img.size.height);
_imageLayer.position = CGPointMake( self.view.bounds.size.width/2.0, self.view.bounds.size.height/2.0 );

_imageLayer.contents = (id)img.CGImage;
_imageLayer.contentsScale = img.scale;

[self.view.layer addSublayer:_imageLayer];
[_imageLayer setNeedsDisplay];
}
UIViewController从 Nib 加载并放入 UITabBarController那是在代码中创建的。

我的问题是 CALayer不呈现其 UIImage UIViewController 时的内容变得可见。我可以制作 CALayer 的唯一方法渲染 UIImage是通过将其内容设置为 UIImageUIViewController 之后可见,例如在 viewDidAppear:方法。

我真的更愿意在 viewDidLoad 中完成我的所有设置。方法(这不是它的用途吗?)。我如何获得 CALayer渲染它的内容?

最佳答案

你不需要那个 setNeedsDisplay在图层或 super View 上。
setNeedsDisplay告诉图层或 View 它需要重绘其内容。 (对于 View ,它将调用 drawRect: 来获取新内容;对于 CALayer,它将询问其委托(delegate)。)请注意,这只会影响 View 或图层本身,而不影响其子级。

由于您直接为图层提供内容,因此您不希望 CA 丢弃该内容并要求替换。

关于objective-c - CALayer 不呈现内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10060912/

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