- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序中有一个 nsscroll View ,我创建了 nsscrollview 的子类来添加 nsgradient,但它不起作用,这是我的实现文件中的代码:
#import "scrollview.h"
@implementation scrollview
@synthesize startingColor;
@synthesize endingColor;
@synthesize angle;
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
[self setStartingColor:[NSColor colorWithCalibratedRed:0.941 green:0.941 blue:0.941 alpha:1]];
[self setEndingColor:[NSColor colorWithCalibratedRed:0.6588 green:0.6588 blue:0.6588 alpha:1]];
[self setAngle:90];
}
return self;
}
- (void)drawRect:(NSRect)rect {
NSBezierPath* roundRectPath = [NSBezierPath bezierPathWithRoundedRect: [self bounds] xRadius:10 yRadius:10];
[roundRectPath addClip];
if (endingColor == nil || [startingColor isEqual:endingColor]) {
// Fill view with a standard background color
[startingColor set];
NSRectFill(rect);
}
else {
// Fill view with a top-down gradient
// from startingColor to endingColor
NSGradient* aGradient = [[NSGradient alloc]
initWithStartingColor:startingColor
endingColor:endingColor];
[aGradient drawInRect:[self bounds] angle:angle];
}
}
最佳答案
第一步是创建一个绘制渐变的自定义 NSView 子类:
GradientBackgroundView.h:
@interface GradientBackgroundView : NSView
{}
@end
GradientBackgroundView.m:
#import "GradientBackgroundView.h"
@implementation GradientBackgroundView
- (void) drawRect:(NSRect)dirtyRect
{
NSGradient *gradient = [[[NSGradient alloc] initWithStartingColor:[NSColor redColor] endingColor:[NSColor greenColor]] autorelease];
[gradient drawInRect:[self bounds] angle:90];
}
@end
下一步是使 ScrollView 的文档 View 成为此类的实例(而不是普通的 NSView)。
在 IB 中,双击 ScrollView ,然后在“标识” Pane 中将“类”设置为 GradientBackgroundView。
从现在开始,事情就基本按照标准方式处理了。您可以向文档 View 添加 subview 、调整其大小等。这是一个屏幕截图:
关于objective-c - NSScrollview 与 NSGradient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901334/
我正在创建一个必须在 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
我是一名优秀的程序员,十分优秀!