gpt4 book ai didi

ios - 将 UILabel 的层添加到另一层(单独的 UIView)

转载 作者:行者123 更新时间:2023-11-29 13:14:16 25 4
gpt4 key购买 nike

我试图理解为什么我不能将 UILabel 的层作为子层添加到单独的 UIView 对象中的另一个层。

- (void)addNumber:(NSInteger)number toLayer:(CALayer *)layer {

UILabel *numberLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds))];
[numberLabel setFont:[UIFont boldSystemFontOfSize:12]];
[numberLabel setText:[NSString stringWithFormat:@"%d", number]];
/* if I change the BackgroundColor to an opaque color it renders as a solid black rect.
* No matter what color I choose
* Setting it as clear then it is transparent
*/
[numberLabel setBackgroundColor:[UIColor clearColor]];
[numberLabel setTextAlignment:NSTextAlignmentCenter];
[numberLabel setTextColor:[UIColor blackColor]];

CALayer *numberLayer = numberLabel.layer;

/* However creating a CATextLayer is successful
CALayer *numberLayer = [CATextLayer layer];
[numberLayer setFont:(__bridge CFTypeRef)([UIFont boldSystemFontOfSize:12])];
[numberLayer setBounds:CGRectMake(0, 0, CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds))];
[numberLayer setString:[NSString stringWithFormat:@"%d", number]];
[numberLayer setAlignmentMode:kCAAlignmentCenter];
[numberLayer setForegroundColor:[[UIColor whiteColor] CGColor]];
*/

[numberLayer setPosition:CGPointMake(CGRectGetMidX(layer.bounds),
CGRectGetMidY(layer.bounds) + CGRectGetMidY(numberLayer.bounds))];
[layer addSublayer:numberLayer];
}

但是,如果我改为创建一个 CATextLayer,它就可以正常工作。 (见注释掉的代码)

我的理解是每个 UIView 子类都由根 CALayer 支持。我是否应该无法将该根 CALayer 添加到另一个 CALayer 的子层层次结构中?

谢谢你的帮助

最佳答案

numberLayer 是指向 numberLabel.layer 的指针,因此它是单个实例 - 层或 UIView 的单个实例只能是一个父级的子级,不能是多个。

关于ios - 将 UILabel 的层添加到另一层(单独的 UIView),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237188/

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