gpt4 book ai didi

objective-c - NSScrollview 与 NSGradient

转载 作者:行者123 更新时间:2023-12-03 16:29:41 25 4
gpt4 key购买 nike

我的应用程序中有一个 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 、调整其大小等。这是一个屏幕截图: Gradient background

关于objective-c - NSScrollview 与 NSGradient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com