我想获得UILabel
背景的颜色。我正在使用这种方法:
- (UIColor *)colorOfPoint:(CGPoint)point{
unsigned char pixel[4] = {0};
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedLast);
CGContextTranslateCTM(context, -point.x, -point.y);
[self.superview.layer renderInContext:context];
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
UIColor *color = [UIColor colorWithRed:pixel[0]/255.0
green:pixel[1]/255.0
blue:pixel[2]/255.0
alpha:pixel[3]/255.0];
return color;
}
但是,当我在const CGFloat *componentColors = CGColorGetComponents([self colorOfPoint:self.amountLabel.frame.origin].CGColor);
的子视图中调用UITableViewCell
时,它总是返回0(也称为黑色)作为背景。怎么可能呢?
答案 0 :(得分:0)
你在哪里运行这段代码? 在UILabel的子类中? 我不明白为什么你打电话
[self.superView.layer renderInContext: ]
我建议你改成
[myLabel.layer renderInContext: ]
其中myLabel是指向您想要颜色的标签的指针。
顺便说一下,你试过myLabel.backgroundColor吗?
(backgroundColor属性是读/写,即那里有一个getter和一个setter ..)从特定点获取颜色的代码是好的,但对于标签来说似乎有些过分,更好适合图像或其他东西,除非你用渐变或图案图像填充它,这似乎是一种非常昂贵的获取背景颜色的方法..