- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 NSButtonCell 类进行了子类化,以使按钮具有不同的外观。我的绘图代码工作正常。它是一个充满 CGGradients 的圆形按钮,看起来像 iTunes 播放控件。它们并不完全相同,但对我来说足够相似。
现在我的问题是按钮类型。我在 -[PlayerButtonCell initImageCell:]
中设置了按钮类型,但我无法让它仅在按下按钮时绘制插入的外观。我向您展示我的一段代码:
//
// PlayerButtonCell.m
// DownTube
//
#import "PlayerButtonCell.h"
@implementation PlayerButtonCell
/* MARK: Init */
- (id)initImageCell:(NSImage *)image {
self = [super initImageCell:image];
if(self != nil) {
[self setImage:image];
[self setButtonType:NSMomentaryPushInButton];
}
return self;
}
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
NSImage *myImage;
NSBezierPath *myPath;
NSRect myFrame;
NSInteger myState;
myFrame = NSInsetRect(cellFrame , STROKE_WIDTH / 2.0 , STROKE_WIDTH / 2.0);
myImage = [self image];
myState = [self state];
NSLog(@"%d", [self buttonType]);
/* Create bezier path */
{
myPath = [NSBezierPath bezierPathWithOvalInRect:myFrame];
}
/* Fill with background color */
{
/* Fill code here */
}
/* Draw gradient if on */
if(myState == NSOffState) {
/* Code to draw the button when it's not pushed in */
} else {
/* Code to draw the button when it IS pressed */
}
/* Stroke */
{
/* Code to stroke the bezier path's edge. */
}
}
@end
如您所见,我通过 [NSButtonCell state]
方法检查推送状态。但按钮单元的作用就像一个复选框,如NSSwitchButton
中所示。这,我不愿意。我希望它瞬间发光。
希望有人能帮助我,
ief2
编辑:我用这个代码创建了一个按钮,它有任何用处:
- (NSButton *)makeRefreshButton {
NSButton *myButton;
NSRect myFrame;
NSImage *myIcon;
PlayerButtonCell *myCell;
myIcon = [NSImage imageNamed:kPlayerViewRefreshIconName];
myCell = [[PlayerButtonCell alloc] initImageCell:myIcon];
myFrame.origin = NSMakePoint(CONTENT_PADDING , CONTENT_PADDING);
myFrame.size = CONTROL_PLAYBACK_SIZE;
myButton = [[NSButton alloc] initWithFrame:myFrame];
[myButton setCell:myCell];
[myButton setButtonType:NSMomentaryPushInButton];
[myCell release];
return [myButton autorelease];
}
最佳答案
您看错了属性。 -state 是按钮是否被选中。您想要查看 isHighlighted,它告诉您按钮是否被按下。
查看复选框:
当您单击并按住它时,该复选框仍处于未选中状态,但会稍微变暗 (702)。然后当您释放鼠标时,它会进行检查(704)。然后,当您再次单击并按住时,选中的复选框会变暗,但仍然处于选中状态(705),并且只有当您在内部释放时,它实际上会取消选中(701)。
因此,有两个不同的方面,突出显示和状态,它们结合起来提供 4 种外观之一。每个 NSButtonCell 每当单击它时都会将其状态提升到 -nextState 返回的值。但某些按钮类型显示状态,而其他按钮类型则不显示。查看任何按钮(例如对话框窗口中的“确定”按钮),您会发现在幕后其状态在打开和关闭之间变化,即使它总是以相同的方式绘制。
您的绘图代码会查看 -showsStateBy 属性,并且仅在表明应该显示状态时才显示状态。
关于cocoa - NSButtonCell 子类的按钮类型不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398989/
我对 NSButtonCell 类进行了子类化,以使按钮具有不同的外观。我的绘图代码工作正常。它是一个充满 CGGradients 的圆形按钮,看起来像 iTunes 播放控件。它们并不完全相同,但对
我想为我的应用程序创建一个自定义开关,其中我为可能的状态(打开、关闭、鼠标按下)提供三个图像。整个外观包含在图像中,因此我不希望 Cocoa 在鼠标按下期间自行突出显示(变暗)按钮。 目前,我已经创建
我正在尝试创建一个使用凹进式 NSButtonCell 对象的自定义范围栏。但是,当鼠标悬停时,我无法绘制边框。我可以通过创建跟踪区域并在鼠标位于内部时将 showBorderOnlyWhileMou
我有一个带有复选框样式单元格的表格,但我不知道如何让这些按钮显示它们应该显示的标题。数据源应该是字符串数组吗?字典数组(字符串/ bool 值)? NSButtonCell 数组?这些似乎都不起作用=
我有 NSTableView 对象,它由带有 NSButtonCell 单元格的一列组成。我还有一个实现 NSTableViewDataSource 协议(protocol)的类。设置单元格值的方法:
我有 NSTableView ,我在上面动态地为每一行创建一个按钮。 NSButtonCell *cell = [[NSButtonCell alloc] init] ; [cell
我在 NSTableView 中使用多个 NSButtonCell 对象。它们是简单的方形按钮,上面有自定义图像。 这些按钮在未突出显示时正确绘制:所有可见的都是图像,按钮矩形的其余部分是透明的。但是
我一直在阅读有关 NSButtons 和 cells 的 Apple 文档,但我似乎真的无法理解两者之间的区别。更复杂的是,它们似乎都有大量重叠的方法,例如 setTitle: 等,而且我不确定应该使
出于某种原因,我的 TableView 的 NSButtonCell 将错误的对象作为参数传递。单击后,我试图读取 NSButtonCell 的标签。 这是我的代码的简化版本: - (int)numb
下面代码中的 NSButtonCell 工作正常,但单击时不会显示复选图标。有什么想法吗? - (NSCell *)outlineView:(NSOutlineView *)outlineView
我想让一个按钮出现在 TableView 中作为最后一行的第一个元素而不是普通数据,所以我创建了 NSTableView 的子类并覆盖了 preparedCellAtColumn:row: 方法以在最
我有一个 NSMatrix,其中有几个 NSButton,它们没有文本,只有图像。其中一张图像是从互联网下载的,我希望在我的 OS X 应用程序中将其变成圆角。 我找到了一个几乎就是我正在寻找的答案:
在 Interface Builder 中,我已将 NSTableView 实例的一列的 dataCell 设置为 NSButtonCell。这按预期工作,但是,尝试使用"template"图像在单击
我正在尝试弄清楚如何在 Cocoa/OSX 中自定义绘制按钮。由于我的 View 是自定义绘制的,因此我不会使用 IB,而是希望用代码来完成这一切。我创建了 NSButtonCell 的子类和 NSB
我有一个 NSTableView,其中一列中包含一个 NSButtonCell。我可以设置在 Interface Builder 中单击按钮时调用的操作,但我无法找到确定按钮存在于表中的哪一行。有什么
在我的 cocoa 应用程序中,我需要一个用于 NSTableView 的自定义 NSCell。这个 NSCell 子类包含一个自定义 NSButtonCell 用于处理点击(以及两个或三个用于文本内
我实现了一个带有图像的 NSButton。 当用户悬停它时,图像会变成其他东西,然后再变回来。 正常状态: 悬停时: 我为 NSButtonCell 使用的代码是: 接口(interface): #i
如何设置 NSButtonCell 的标签(标题)文本的颜色,即表格 View 的列单元格?在我的例子中,它是一个复选框按钮单元格。 (是否可以使用IB?) 最佳答案 试试这个,我认为它是完美的。 N
我有一个派生自 NSButtonCell 的类,我在其中绘制边框: override func drawBezel(withFrame frame: NSRect, in controlView: N
我目前正在开发自定义主题的 NSButton。我发现的每个教程或指南都需要子类化 NSButtonCell,甚至是 the guide from Apple . 所有这些似乎都过时了,因为 NSCon
我是一名优秀的程序员,十分优秀!