相关疑难解决方法(0)

是否有一种"正确"的方式让NSTextFieldCell绘制垂直居中的文本?

我有NSTableView几个文本列.默认情况下,dataCell这些列是Apple NSTextFieldCell类的一个实例,它可以执行各种奇妙的操作,但它会绘制与单元格顶部对齐的文本,并且我希望文本在单元格中垂直居中.

有一个内部标志NSTextFieldCell可以用来垂直居中文本,它工作得很漂亮.但是,由于它是一个内部标志,它的使用不受Apple的批准,它可能会在未来的版本中消失而不会发出警告.我目前正在使用这个内部标志,因为它简单而有效.Apple显然花了一些时间来实现这个功能,所以我不喜欢重新实现它的想法.

所以; 我的问题是:实现与Apple的NStextFieldCell完全相同的行为的正确方法是什么,但是绘制垂直居中的文本而不是顶部对齐?

为了记录,这是我目前的"解决方案":

@interface NSTextFieldCell (MyCategories)
- (void)setVerticalCentering:(BOOL)centerVertical;
@end

@implementation NSTextFieldCell (MyCategories)
- (void)setVerticalCentering:(BOOL)centerVertical
{
    @try { _cFlags.vCentered = centerVertical ? 1 : 0; }
    @catch(...) { NSLog(@"*** unable to set vertical centering"); }
}
@end
Run Code Online (Sandbox Code Playgroud)

使用如下:

[[myTableColumn dataCell] setVerticalCentering:YES];
Run Code Online (Sandbox Code Playgroud)

customization cocoa vertical-alignment nstextfieldcell

50
推荐指数
3
解决办法
2万
查看次数

在NSTextField中设置文本垂直中心

在某个高度NSTextField中,如果文本的大小很小,则布局将如此

在此输入图像描述

文本流向顶部,如何使文本中心像这样:

在此输入图像描述

macos cocoa objective-c

18
推荐指数
3
解决办法
2万
查看次数

将一些文本垂直居中放在NSTableView行中的正确方法是什么?

我的OS X应用程序具有NSTableView更大的行高:

myTableView.rowSizeStyle = .large
Run Code Online (Sandbox Code Playgroud)

我尝试在其中放入一些文字,但我发现我放入的文字不能垂直居中.

请参阅下面的代码.我有三列,前两个使用NSTextFieldNSTextView放置一些文本.第三个是复选框按钮.

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {

    if (tableColumn?.identifier == "Column1") {

        let field = NSTextField()
        field.stringValue = "someText"
        field.isBordered = false
        field.isEditable = false
        field.backgroundColor = NSColor.red
        return field
    } else if (tableColumn?.identifier == "Column2") {

        let field = NSTextView()
        field.string = "someText"
        field.backgroundColor = NSColor.green
        return field
    } else if (tableColumn?.identifier == "Column3") {

        let field = NSButton()
        field.setButtonType(NSSwitchButton)
        field.title …
Run Code Online (Sandbox Code Playgroud)

macos nstableview swift

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