是否有内置的方法来创建圆角UILabels?如果答案是否定的,那么如何创建这样的对象呢?
我正在寻找一种在运行时反转任意NSColor值的方法,并且似乎没有任何内置方法可以这样做.
我将使用类别扩展NSColor如下:
NSColor * invertedColor = [someOtherColor inverted];
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的类别方法原型:
@implementation NSColor (MyCategories)
- (NSColor *)inverted
{
NSColor * original = [self colorUsingColorSpaceName:
NSCalibratedRGBColorSpace];
return ...?
}
@end
Run Code Online (Sandbox Code Playgroud)
任何人都可以填补空白吗?这不一定是完美的,但我希望它有所帮助.即:
[[[NSColor someColor] inverted] inverted] 会导致颜色非常接近原始颜色
[[NSColor whiteColor] inverted] 会非常接近 [NSColor blackColor]
反转的颜色将位于色轮的相对侧.(红色和绿色,黄色和紫罗兰色等)
alpha值应保持与原始值相同NSColor.我只是想要反转颜色,而不是透明度.
更新3 :(现在颜色!)
事实证明,使用补色(颜色与原始色调相差180°的颜色)还不够,因为白色和黑色实际上没有色调值.从phoebus提供的答案开始,这就是我想出的:
CGFloat hue = [original hueComponent];
if (hue >= 0.5) { hue -= 0.5; } else { hue += 0.5; }
return …Run Code Online (Sandbox Code Playgroud) 是否有Cocoa Touch方式将颜色从一个颜色空间转换为另一个颜色空间?
在此代码的末尾:
UIColor *grey = [UIColor colorWithWhite: 0.5 alpha: 1.0];
CGColorRef greyRef = [grey CGColor];
int x = CGColorGetNumberOfComponents(greyRef);
Run Code Online (Sandbox Code Playgroud)
...... x是2.
我需要这个的原因是我正在尝试将颜色复制到颜色组件列表中CGGradientCreateWithColorComponents,这需要单个颜色空间中的所有颜色.问题是灰色是灰度色彩空间,而不是RGB色彩空间.(这个名字暂时让我失望,但这并不重要.)
CGGradientRef createGradient(NSInteger inCount, NSArray* inColors, CGFloat* inLocations) {
CGColorSpaceRef theColorspace = CGColorSpaceCreateDeviceRGB( );
size_t numberOfComponents = 4;
NSInteger colorSize = numberOfComponents * sizeof( CGFloat );
CGFloat *theComponents = malloc( inCount * colorSize );
CGFloat *temp = theComponents;
for ( NSInteger i = 0; i < inCount; i++ ) {
UIColor *theColor = [inColors objectAtIndex: …Run Code Online (Sandbox Code Playgroud) 我有60%不透明的形式.当用户更改表单的颜色时,有时(取决于所选颜色),他们不再能够看到表单上的文本,因为它与表单的颜色非常相似.所以,我试图做一个if/switch来看看表格中选择的BackColor是Dark还是Light.如果是黑暗,则表单上的所有文本都应为白色.如果是Light,则表单上的所有文本都应为黑色.
这是可能吗?我已经看到了这个地方,但不知道在没有在搜索字段中写完整个问题的情况下搜索什么.
任何帮助/建议将不胜感激.
谢谢你,杰森.
我的视图有一个带有文本标签覆盖的背景图像什么是基于背景图像确定文本颜色的最好/最好的动态方式,因此它可以读取(现在,我只对确定文本颜色应该是暗的还是感兴趣光)
谢谢 :)
可能重复:
检查UIColor是暗还是亮?
有没有简单的方法来确定UIColor是暗还是亮?我想在动态背景上添加标签,如果背景暗,则将其文本颜色更改为白色;如果是浅色则将其文本颜色更改为黑色.