小编sam*_*sam的帖子

Mac OS X文档图标模板?

是否有适用于Mac OS X文档图标的模板?它看起来像一张白纸,右上角向下弯曲.很多应用程序似乎都使用此图标作为自己的自定义文档类型的基础.每个人都使用模板作为基本形状,还是每个开发人员都必须从头开始绘制自己的模板?

我知道你可以在这里获得普通文档图标:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/GenericDocument.icns
Run Code Online (Sandbox Code Playgroud)

但这是.icns格式,而不是我可以轻松编辑的格式.此外,如果您希望文档背景为白色,则不容易.

如果每个图标大小(512,256,128,32,16)都有可用的Photoshop(.psd)模板,那就太好了.

macos icons

27
推荐指数
4
解决办法
9096
查看次数

在NSTableView中仅为填充的行绘制网格线?

如何仅为已填充的行在NSTableView中绘制网格线?当我将网格样式掩码设置为NSTableViewSolidHorizo​​ntalGridStyleMask时,它会为所有行绘制网格线,无论是否填充.

我正在寻找一些示例代码来做到这一点.

cocoa

25
推荐指数
2
解决办法
5873
查看次数

带阴影的NSTextField?

我想在Interface Builder中设置的NSTextFields有阴影.我已经实现了一种方法,这似乎有效,但我不确定它是否正确.

我所做的是将NSTextFieldCell子类化为如下,然后将我的子类设置为IB中的NSTextField的单元格类型.这种方法有问题吗?有没有更好的办法?

#import "ShadowTextFieldCell.h"

static NSShadow *kShadow = nil;

@implementation ShadowTextFieldCell

+ (void)initialize
{
    kShadow = [[NSShadow alloc] init];
    [kShadow setShadowColor:[NSColor colorWithCalibratedWhite:0.f alpha:0.08f]];
    [kShadow setShadowBlurRadius:0.f];
    [kShadow setShadowOffset:NSMakeSize(0.f, -2.f)];
}

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    [kShadow set];
    [super drawInteriorWithFrame:cellFrame inView:controlView];
}

@end
Run Code Online (Sandbox Code Playgroud)

cocoa nstextfield nstextfieldcell

22
推荐指数
2
解决办法
5474
查看次数

如何在Objective-C中自定义绘制窗口标题栏?

我想自定义我在OS X上绘制窗口标题栏的方式.具体来说,我想做一些像Twitterrific应用程序,其中有自定义关闭按钮,没有最小/最大按钮,以及窗口标题文本是对的.与Twitterrific不同,我不打算自定义绘制整个窗口(尽管我并不完全反对).

我已经看过Cocoa With Love上的RoundWindow示例以及Apple提供的RoundTransparentWindow示例,但似乎都不合适.

macos cocoa objective-c

11
推荐指数
2
解决办法
1万
查看次数

如何检测用户何时打开OS X通知中心?

如何检测用户何时打开OS X Mountain Lion通知中心?

是否有我可以观察到的NSNotification(呃,非常相似的术语)?

macos cocoa

11
推荐指数
1
解决办法
287
查看次数

在Xcode中编译i386与x86_64之间的区别?

在Xcode中编译Mac应用程序与设置为i386 vs x86_64的Active Architecture(在主窗口左上角的下拉列表中选择)之间有什么区别?在项目的构建设置中,架构选项是标准(32/64位通用),32位通用和64位Intel.实际上,这些意味着什么以及如何决定?

假设一个目标是OS X 10.5及更高版本.我在Activity Monitor中看到,编译x86_64会导致应用程序使用的内存多于为i386编译的内存.有什么好处?我知道64位是"未来",但考虑到更高的内存使用率,选择32位是否有意义?

xcode 32bit-64bit

7
推荐指数
1
解决办法
2万
查看次数

如何在NSTableCellView中单击NSTextView时在NSTableView中选择一行?

我有一个基于视图的单列NSTableView.在我的NSTableCellView子类中,我有一个可选的NSTextView,但不可编辑.

当用户直接单击NSTableCellView时,该行会正确突出显示.但是当用户单击NSTableCellView内的NSTextView时,该行不会突出显示.

如何将NSTextView上的单击传递给NSTableCellView以使该行突出显示?

类层次结构如下所示:NSScrollView> NSTableView> NSTableColumn> NSTableCellView> NSTextView

cocoa nstextview nstableview

5
推荐指数
1
解决办法
2807
查看次数

从我的应用程序以编程方式启动Mac Calendar.app(并选择特定日期)?

我想在我的Mac应用程序中包含一个按钮,当按下该按钮时,将启动用户的默认日历应用程序.我希望日历可以在特定日期开放.

这适用于OS X Mountain Lion.

有没有一般的方法来做到这一点?

编辑:FWIW,这就是我现在正在做的事情:

- (IBAction)launchCalendarApp:(id)sender
{
    [[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Calendar.app"];
}
Run Code Online (Sandbox Code Playgroud)

我知道硬编码这样的道路是一个坏主意,这就是为什么我在问这个问题.

更新:这是我最终做的事情:

- (IBAction)launchCalendarApp:(id)sender
{
    NSWorkspace *sharedWorkspace = [NSWorkspace sharedWorkspace];
    NSString *iCalPath = [sharedWorkspace absolutePathForAppBundleWithIdentifier:@"com.apple.iCal"];
    BOOL didLaunch = [sharedWorkspace launchApplication:iCalPath];
    if (didLaunch == NO) {
        NSString *message = NSLocalizedString(@"The Calendar application could not be found.", @"Alert box message when we fail to launch the Calendar application");
        NSAlert *alert = [NSAlert alertWithMessageText:message defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:@""];
        [alert setAlertStyle:NSCriticalAlertStyle];
        [alert runModal];
    }
}
Run Code Online (Sandbox Code Playgroud)

听起来,在开发更好的API之前,所有可行的方法都是变通方法.我的解决方案类似于Jay的建议.我正在使用包标识符来获取路径,因为我认为它不那么脆弱.即使他们(或用户)决定重命名应用程序,Apple也不太可能在未来更改软件包ID.不幸的是,这种方法并没有让我到达特定日期.当我有更多时间时,我会进一步调查一些其他建议(使用ical://等).

更新2:NSGod下面有一个很棒的答案,如果您的应用程序没有沙盒,也可以打开日历到特定日期.

macos cocoa calendar osx-mountain-lion

4
推荐指数
1
解决办法
1950
查看次数

如何使用NSSplitViewController设置自定义NSSplitView?

我想使用自定义NSSplitView与我NSSplitViewController

文件说:

要提供自定义的拆分视图,请在继承的viewDidLoad()方法中调用super之前随时设置此属性。也就是说,在拆分视图控制器的isViewLoaded属性为true之前。

我的NSSplitViewController子类称为MainVC

我尝试-viewDidLoad在调用之前设置我的自定义拆分视图[super viewDidLoad]

- (void)viewDidLoad {
    self.splitView = [MySplitView new];
    [super viewDidLoad];
    // Rest of viewDidLoad...
}
Run Code Online (Sandbox Code Playgroud)

但这没用。我收到以下错误:

2017-09-02 10:35:43.527312-0700 Zee [6497:632581] ** *-[MainVC setSplitView:],/ BuildRoot / Library / Caches / com.apple.xbs / Sources / AppKit / AppKit-中的声明失败1561 / Controllers / NSSplitViewController.m:220

2017-09-02 10:35:43.527558-0700 Zee [6497:632581] MainVC:-splitView只能在加载视图之前分配

我也尝试覆盖loadView

- (void)loadView {
    self.splitView = [MySplitView new];
    [super loadView];
}
Run Code Online (Sandbox Code Playgroud)

但是我得到:

2017-09-02 10:39:39.377345-0700 …

macos cocoa appkit nssplitview nssplitviewcontroller

4
推荐指数
1
解决办法
643
查看次数

如何使用-webkit-appearance:searchfield-results-decoration?

所有节日快乐.当我得到答案时,我可能会感到非常愚蠢,但我想知道如何使用CSS"-webkit-appearance:searchfield-results-decoration"规则在搜索框内绘制一个小放大镜.

我想创建一个类似于apple.com右上角的搜索框.它应该有圆角,放大镜图标,以及用户开始输入后出现的取消/清除按钮.我可以通过大部分方式获得

<input type="search" /> 
Run Code Online (Sandbox Code Playgroud)

但这缺乏放大镜图标.我也知道我可以使用"-webkit-appearance:searchfield"来设置输入元素的样式,但这似乎只是使圆角没有正确的左/右填充,图标或取消按钮.

我只关心在Webkit中使用它,因为它将在Cocoa WebView中使用.我不需要IE,Firefox,Opera等的标记.

css html5 webkit

3
推荐指数
1
解决办法
5353
查看次数

从NSTextView中提取第一个非空白行的最有效方法是什么?

从NSTextView中提取第一个非空白行的最有效方法是什么?

例如,如果文本是:

\n
\n
    \n
         This is the text I want     \n
 \n
Foo bar  \n
\n
Run Code Online (Sandbox Code Playgroud)

结果将是"这是我想要的文字".

这是我有的:

NSString *content = self.textView.textStorage.string;
NSInteger len = [content length];
NSInteger i = 0;

// Scan past leading whitespace and newlines
while (i < len && [[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:[content characterAtIndex:i]]) {
    i++;
}
// Now, scan to first newline
while (i < len && ![[NSCharacterSet newlineCharacterSet] characterIsMember:[content characterAtIndex:i]]) {
    i++;
}
// Grab the substring up to that newline
NSString *resultWithWhitespace = …
Run Code Online (Sandbox Code Playgroud)

cocoa nsstring nstextview

3
推荐指数
1
解决办法
369
查看次数

如何在 macOS 10.12+ 上自定义 NSTableView 标头?

MacOS 10.12+、Xcode 8+、Swift 3:

我想以编程方式自定义 NSTableView 标题的字体和绘图。我知道有关于此的较旧的问题,但我今天找不到任何有效的方法。

例如,我尝试将 NSTableHeaderCell 子类化以设置自定义字体:

class MyHeaderCell: NSTableHeaderCell {
    override func drawInterior(withFrame cellFrame: NSRect, in controlView: NSView) {
        NSLog("MyHeaderCell is drawing")
        font = NSFont.boldSystemFont(ofSize: 12)
        super.drawInterior(withFrame: cellFrame, in: controlView)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的表视图中使用该子类:

tableColumn.headerCell = MyHeaderCell()
Run Code Online (Sandbox Code Playgroud)

我在控制台中看到消息“MyHeaderCell 正在绘制”,但表格标题的字体没有改变。

macos cocoa nstableview nstableheadercell swift3

1
推荐指数
1
解决办法
2550
查看次数