2

设置后centersPlaceholder = false,占位符在左侧正确对齐,但搜索按钮不显示其图像。输入某些文本时的取消按钮也是如此。这是正确的行为还是我错过了什么?

4

2 回答 2

2

这个相关问题揭示了如何(ab)使用奇怪的行为来强制在该领域左对齐。只需继承 NSSearchFieldCell 并覆盖draw方法:

import Cocoa

class FilterFieldCell: NSSearchFieldCell {
    override func draw(withFrame cellFrame: NSRect, in controlView: NSView) {
        super.draw(withFrame: cellFrame, in: controlView)
    }
}

然后将您的搜索字段单元格设置为此类。

于 2017-08-14T23:08:02.403 回答
0
#define kSearchButtonWidth 22.f

#import "AMSearchField.h"

@implementation AMSearchField

- (void)drawRect:(NSRect)dirtyRect {
    [super drawRect:dirtyRect];
    // Drawing code here.
}

- (NSRect)rectForSearchButtonWhenCentered:(BOOL)isCentered
{
    CGRect rect = [super rectForSearchButtonWhenCentered:isCentered];
    if (rect.size.width < kSearchButtonWidth) {
        rect.size.width = kSearchButtonWidth;
    }
    return rect;
}

- (NSRect)rectForSearchTextWhenCentered:(BOOL)isCentered
{
    CGRect rect = [super rectForSearchTextWhenCentered:isCentered];
    if (rect.origin.x < kSearchButtonWidth) {
        CGFloat delta = kSearchButtonWidth - rect.origin.x;
        rect.origin.x = kSearchButtonWidth;
        rect.size.width = rect.size.width - delta;
    }
    return rect;
}

@end

在 xib 文件中,将搜索类设置为AMSearchField

于 2018-05-16T13:19:11.977 回答