小编Fan*_*ude的帖子

如何在Cocoa中自定义NSTextField外观(使用的字体,字体大小)?

我正在制作一个Cocoa应用程序,我无法弄清楚如何做某事.

我想制作一个NSTextField,其外观与Wallet中的一样:

钱包截图.

我想出了如何更改NSTextField大小,但我不知道如何更改字体和大小.我将NSTextFieldCell子类化为这样但它不起作用,如果我不选择系统字体并且大小只改变行高而不是字符高度,则字体不会改变.

头文件:

#import <Cocoa/Cocoa.h>

@interface VLTextFieldCell : NSTextFieldCell {
}
@end
Run Code Online (Sandbox Code Playgroud)

班级档案:

#import "VLTextFieldCell.h"

@implementation VLTextFieldCell

- (NSFont *)font
{
    return [NSFont fontWithName:@"Lucida Grande" size:16.0];
}

@end
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c nstextfield

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

当Tweetbot运行时,在CALayer动画期间关闭窗口时OS X应用程序冻结

我做了一个自定义NSControl,将其用作自定义图层备份按钮.

MyButton实例收到mouseDownmouseUp发生事件时,它会改变它backgroundLayerbackgroundColor和它textLayerforegroundColor.

它使用图层,因此隐式动画更改.

但是mouseUp如果鼠标在MyButton实例框架内,我通过sendAction(_:to:)方法调用链接动作.

我将操作链接到关闭当前窗口并打开另一个窗口的方法,但有时在第二个窗口出现后应用程序冻结.

我尝试了几件事情,它似乎与图层动画有关,也许在关闭窗口之前要做的事我不知道.

更新:这是Tweetbot!如果Tweetbot正在运行它会冻结应用程序!一旦我退出它,应用程序就会再次响应.

您可以在这里找到一个示例项目:https : //dl.dropboxusercontent.com/u/378166/CALayerFreeze.zip
(请注意,在发生错误之前,您有时需要多次尝试)

这是代码MyButton.

class MyButton: NSControl {
    let title = "Click me!"

    // Init
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        setup()
    }

    deinit {
        trackingAreas.forEach { self.removeTrackingArea($0) }
    }

    // Layer + Tracking Area configuration
    var backgroundLayer = CALayer()
    var textLayer = CATextLayer()

    func setup() { …
Run Code Online (Sandbox Code Playgroud)

macos cocoa swift

5
推荐指数
0
解决办法
173
查看次数

如何在我的应用程序的Resources文件夹中播放mp3文件?

我正在制作一个可以在事件中播放声音的应用程序,但我无法弄清楚如何从应用程序的ressources文件夹中访问文件.

这是我正在做的事情:

NSSound *player = [[NSSound alloc] initWithContentsOfFile:@"Sound.mp3"] byReference:NO];
[player play];
Run Code Online (Sandbox Code Playgroud)

但它根本不起作用.如果我放一个完整长度的路径它会工作,但我需要另一种方式,因为有人可能会将我的应用程序放在Application文件夹以外的其他位置.

macos cocoa objective-c nssound

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

Swift:创建具有已定义数量的值的UInt8数组

这怎么可能创建ArrayUInt8斯威夫特?我用以下代码尝试了这个:

var array: [UInt8] = [UInt8]()
Run Code Online (Sandbox Code Playgroud)

现在我想循环第二个UInt变量a:

for var i: Int = 0; i < a.count; i++ {
    array[i] = UInt8(a[i]^b[i])
}
Run Code Online (Sandbox Code Playgroud)

但后来我收到以下错误:

致命错误:数组索引超出范围

当我在变量中放入相同的位a- >时[0x01,0x01,0x01,0x01,0x01],array循环工作正常!

有人知道为什么吗?

uint8t swift

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

标签 统计

cocoa ×3

macos ×3

objective-c ×2

swift ×2

nssound ×1

nstextfield ×1

uint8t ×1