我的UILabel
位于UIImageView
之上。 UIImageView
可以更改显示各种图像。根据{{1}}中显示的图片,UIImageView
的文字颜色必须能够动态更改。例如,当显示浅色图像时,将使用深色UILabel
文本颜色,或者当使用深色图像时,将使用浅色文本颜色。
在Swift中,提取单个像素的RGB值或直接位于UILabel
位置后面的一组像素的平均RGB值的最佳,简单,最有效的方法是什么? {1}}?
或者甚至更好,在Swift中,有一种UILabel
方法可以根据文本颜色的上方位置动态更改文本颜色吗?
谢谢。
答案 0 :(得分:0)
老实说,我甚至不会抓住RGB,你应该知道你在UIImageView中放置了什么图像,所以根据它来规划标签。
如果你必须选择RGB,那么就这样做:
UIGraphicsBeginImageContext(CGSizeMake(1,1));
let context = UIGraphicsGetCurrentContext()
//We translate in the opposite direction so that when we draw to the canvas, it will draw our point at the first spot in readable memory
CGContextTranslateCTM(context, -x, -y);
// Make the CALayer to draw in our "canvas".
self.layer.renderInContext(context!);
let colorpoint = UnsafeMutablePointer<UInt32>(CGBitmapContextGetData(context));
UIGraphicsEndImageContext();
x和y是你想要抓住的点,而self是你的UIImageView。
编辑:@ Mr.T发布了一个指向如何完成此操作的链接,如果您需要平均值,只需将UIGraphicsBeginImageContext(CGSizeMake(1,1));
更改为UIGraphicsBeginImageContext(CGSizeMake(width,height));
并计算平均值即可获得所需的像素数量有这个数据