gpt4 book ai didi

ios 将整数颜色转换为 uicolor 或十六进制值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:25 25 4
gpt4 key购买 nike

在 android 中有一个选项,您可以根据 int 值设置颜色。无论如何,我可以使用这个值或转换这个值以将其设置为 iOS 中的 UIColor 吗?例如这个值,-5242884可以在android中用来设置颜色。

据我所知,iOS 广泛使用十六进制值或 rgb 值来设置 UIColor。但是我在这里找不到关于我的问题的任何信息。无论如何我可以改用 int 值。

最佳答案

您引用的整数似乎是压缩整数。请参阅:android color documentation .您需要找到一种方法将打包的 int 转换为十六进制,然后您可以使用此宏(获得 here )将十六进制数转换为 UIColor:

#define HEXCOLOR(c) [UIColor colorWithRed:((c>>24)&0xFF)/255.0 green:((c>>16)&0xFF)/255.0 blue:((c>>8)&0xFF)/255.0  alpha:((c)&0xFF)/255.0]

我知道这并不能真正回答您的问题,但它可以帮助您缩小搜索范围。

编辑

好的,所以我刚刚意识到上面的宏确实解决了您的问题。只要给它整数表示,它就会给你正确的 UIColor。我的测试代码如下:

UIColor *color = HEXCOLOR(-16776961); // Blue const from android link above
const CGFloat *components = CGColorGetComponents(color.CGColor);
NSString *colorAsString = [NSString stringWithFormat:@"%f,%f,%f,%f", components[0], components[1], components[2], components[3]];
NSLog(@"%@",colorAsString); // Prints 1.0 0.0 0.0 1.0 which corresponds to 0xff0000ff

我从 here 得到了一些帮助.

编辑

修复了宏以期望正确的 RGBA 值:

#define ANDROID_COLOR(c) [UIColor colorWithRed:((c>>16)&0xFF)/255.0 green:((c>>8)&0xFF)/255.0 blue:((c)&0xFF)/255.0  alpha:((c>>24)&0xFF)/255.0]

之前的宏期望的是 RGBA,而 Android color int 给出的是 ARGB。

关于ios 将整数颜色转换为 uicolor 或十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21035553/

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