- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
AppKit 在 iOS 中不可用,所以我正在寻找替代品。
具体来说,我正在寻找一种替代方法:
- (NSColor *)interpolatedColorAtLocation: (CGFloat)location
我需要一种方法来定义渐变,并根据输入位置(float
)查找颜色值。
最佳答案
如果您确实需要一个渐变对象(用于绘制渐变?),您可以使用 CG-level CGGradient “类”。
至于在渐变中的特定位置插值颜色,您需要知道的是周围的两种颜色(相对于您给定的位置)和它们之间的插值(t
将是0.0..1.0
之间的位置相对于两种颜色,而不是整个渐变):
- (UIColor *)colorByInterpolatingWith:(UIColor *)color factor:(CGFloat)factor {
factor = MIN(MAX(t, 0.0), 1.0);
const CGFloat *startComponent = CGColorGetComponents(self.CGColor);
const CGFloat *endComponent = CGColorGetComponents(color.CGColor);
float startAlpha = CGColorGetAlpha(self.CGColor);
float endAlpha = CGColorGetAlpha(color.CGColor);
float r = startComponent[0] + (endComponent[0] - startComponent[0]) * factor;
float g = startComponent[1] + (endComponent[1] - startComponent[1]) * factor;
float b = startComponent[2] + (endComponent[2] - startComponent[2]) * factor;
float a = startAlpha + (endAlpha - startAlpha) * factor;
return [UIColor colorWithRed:r green:g blue:b alpha:a];
}
使用示例:
UIColor *purpleColor = [[UIColor redColor] colorByInterpolatingWith:[UIColor blueColor] factor:0.5];
关于ios - 在 iOS 上插值渐变颜色(与 NSGradient 一样)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20323180/
我正在创建一个必须在 Tiger 上运行的应用程序,并且我需要在 NSView 上绘制渐变。不幸的是,NSGradient 仅适用于 Leopard 及以上版本。谷歌根本不是我的 friend 。如何
是否有一个与- (void)drawInBezierPath:(NSBezierPath *)path angle:(CGFloat)angle等效的iOS设备? 我需要在UIBezierPath内绘
简单地说:是否可以在单个 NSView 上的两个 NSGradient“填充”之间淡入淡出?例如。绘制一个渐变并淡入淡出以绘制下一个渐变。 最佳答案 我最终对 NSView 进行了子类化;从中获取 N
好吧,长话短说: 我正在使用(嵌入到 bundle 中)FontAwesome 我将它用作一些自定义 NSButton 中的字体 在 NSButton 子类中,我想为它们着色,就像 Xcode 选项卡
是否可以将 NSGradient 转换为 NSColor - (void) viewWillDraw { NSGradient *grad = [[NSGradient alloc] init
我的应用程序中有一个 nsscroll View ,我创建了 nsscrollview 的子类来添加 nsgradient,但它不起作用,这是我的实现文件中的代码: #import "scrollvi
我正在尝试使用 Cocoa 绘制形状的反射。我已经应用了 NSAffineTransform 并成功重新绘制了形状,但现在我不知道如何在其上绘制 alpha 蒙版。我正在使用 NSCompositeD
我有一组 NSColor 和一组 CGFloat 表示梯度停止。我不知道如何使用这些数组来初始化 NSGradient。 我尝试将它们制作成一个 (NSColor, CGFloat) 数组,但是 NS
我有一个函数,可以使用传递给它的 NSColor 绘制特定区域。为了给它一种 3D 外观,我需要用给定颜色的渐变来绘制它。假设 NSColor 是 blueColor 那么该区域应该用 lightBl
我是 cocoa 新手,我尝试将 NSGradient 设置为 NSWindow 背景,但这对我来说太难了......我已经尝试过这段代码 NSGradient *gradient = [[NSGra
我制作了一个自定义框,它是 NSBox 的子类。我重写 drawRect: 方法并在其中绘制渐变,如下所示(假设我已经有 start 和 end 颜色): -(void)drawRect:(NSRec
我非常熟悉想要复制属性与保留属性的原因。 (本质上是值与关系参数。例如,您几乎总是想要复制字符串。) NSColor 和 NSGradient 怎么样? 它们都符合 NSCopying,但按照目前的实
我正在使用 NSGradient 来处理一些东西,有时我需要添加/更改/删除颜色。现在据我所知,NSGradient 是不可变的,所以我知道如何做到这一点的唯一方法是创建一个新的渐变并在过程中更改颜色
我正在自定义 View 上绘制一个 NSGradient ,如下所示: - (void)drawRect: (NSRect)dirtyRect { NSGradient* g = [[NSGr
AppKit 在 iOS 中不可用,所以我正在寻找替代品。 具体来说,我正在寻找一种替代方法: - (NSColor *)interpolatedColorAtLocation: (CGFloat)l
我正在寻找一个扩展,以便在 Swift 中使用 Cocoa (macOS) 从 NSGradient 对象创建 NSImage。 最佳答案 这是在 Swift 5 中执行此操作的方法: extensi
我是一名优秀的程序员,十分优秀!