首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成随机UIColor

生成随机UIColor
EN

Stack Overflow用户
提问于 2014-01-15 06:24:16
回答 10查看 24.3K关注 0票数 27

我试着给UILabel找个随意的颜色.

代码语言:javascript
复制
- (UIColor *)randomColor
{
    int red = arc4random() % 255 / 255.0;
    int green = arc4random() % 255 / 255.0;
    int blue = arc4random() % 255 / 255.0;
    UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
    NSLog(@"%@", color);
    return color;
}

并使用它:

代码语言:javascript
复制
[mat addAttributes:@{NSForegroundColorAttributeName : [self randomColor]} range:range];

但颜色总是黑色的。怎么啦?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-01-15 06:28:38

因为您已将颜色值分配给int变量。使用float (或CGFloat)代替。另外(作为@stackunderflow's said),为了覆盖整个范围的0.0 ... 1.0,剩余部分必须采用模256。

代码语言:javascript
复制
CGFloat red = arc4random() % 256 / 255.0;
// Or (recommended):
CGFloat red = arc4random_uniform(256) / 255.0;
票数 27
EN

Stack Overflow用户

发布于 2014-05-07 15:02:36

代码语言:javascript
复制
[UIColor colorWithHue:drand48() saturation:1.0 brightness:1.0 alpha:1.0];

或者在Swift:

代码语言:javascript
复制
UIColor(hue: CGFloat(drand48()), saturation: 1, brightness: 1, alpha: 1)

随意随意调整饱和度和亮度以满足你的喜好。

票数 48
EN

Stack Overflow用户

发布于 2016-01-06 22:31:51

下面是一个快速版本,它被制成了一个UIColor扩展:

代码语言:javascript
复制
extension UIColor {
    class func randomColor(randomAlpha: Bool = false) -> UIColor {
        let redValue = CGFloat(arc4random_uniform(255)) / 255.0;
        let greenValue = CGFloat(arc4random_uniform(255)) / 255.0;
        let blueValue = CGFloat(arc4random_uniform(255)) / 255.0;
        let alphaValue = randomAlpha ? CGFloat(arc4random_uniform(255)) / 255.0 : 1;

        return UIColor(red: redValue, green: greenValue, blue: blueValue, alpha: alphaValue)
    }
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21130433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档