【问题标题】:Issue with [UIColor getWhite:alpha:][UIColor getWhite:alpha:] 的问题
【发布时间】:2011-11-11 15:35:30
【问题描述】:

我正在尝试通过以下方式获取 UIColor 的白色值(redColor 只是示例):

UIColor *col = [UIColor redColor];
CGFloat *white;

if([col getWhite:white alpha:nil])
{
    NSLog(@"worked");
}
else
{
    NSLog(@"didn't");
}

但这总是打印“没有”,我不明白为什么。 UIColor.h 的定义说“如果接收器具有兼容的颜色空间,则填充任何非 NULL 参数并返回 'YES'。否则,参数保持不变并返回 'NO'。”所以我假设接收器的色彩空间不兼容......但我不知道那是什么意思。有什么想法吗?

【问题讨论】:

    标签: ios pointers uicolor


    【解决方案1】:

    您正在传递一个指向随机内存块的指针 (CGFloat *white;)

    您应该创建一个静态 CGFloat 并传递对它的引用

    UIColor *col = [UIColor redColor];
    CGFloat white;
    
    if([col getWhite:&white alpha:nil])
    {
        NSLog(@"worked");
    }
    else
    {
        NSLog(@"didn't");
    }
    

    有可能无法从灰度转换,您可以尝试检查

    UIColor *col = [UIColor colorWithWhite:1.0 alpha:1.0];
    CGFloat white;
    
    if([col getWhite:&white alpha:nil])
    {
        NSLog(@"worked");
    }
    else
    {
        NSLog(@"didn't");
    }
    

    【讨论】:

    • 谢谢你,我在周末意识到这就是我正在做的事情,但没有机会纠正自己......
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 2012-01-09
    • 1970-01-01
    • 2019-11-24
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多