objective-c - NSTextField 像 safari 地址栏

标签 objective-c cocoa macos webview nstextfield

构建地址字段(如 Safari 中的地址字段)的最佳方法是什么?

需要有可编辑的文本,并确定进度指示器背景。

最佳答案

你可以继承NSTextField并覆盖 -drawRect:方法用某种颜色或渐变(或其他)“填充”整个宽度的适当百分比以进行进度。如果我没听错你的问题。

-(void)drawRect:(NSRect)dirtyRect {
    CGFloat progress = 0.33;

    NSRect progressRect = [self bounds];
    progressRect.size.width *= progress;

    [[NSColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:0.4] set];
    NSRectFillUsingOperation(progressRect, NSCompositeSourceOver);

    [super drawRect:dirtyRect];
}

显然,“进度”将来自您声明的属性并根据模型进行更新。你需要确保 setDrawsBackground:已关闭,或背景设置为 [NSColor clearColor];以便看到您的自定义绘图。

这是上面代码的截图。

Tested Theory

关于objective-c - NSTextField 像 safari 地址栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4676555/

相关文章:

ios - 在 Textview 中添加 Carousel View

ios - loadNibNamed 从 Storyboard

objective-c - NSTextView 未将文本绘制到 NSImage 上

cocoa - NSWindow标题栏背景和文本颜色

python - 如何在 OS X 上使用 Python 中的 matplotlib 生成 Cocoa 可识别的图(最好是 Leopard)

cocoa - 根据表格列的 isEnabled 出价自定义 NSTextFieldCell

objective-c - NSTextView,设置字符串: raising exception

ios - Game Center View 关闭后的启动方法

swift - Swift 中的 macOS 终端模拟器

ruby-on-rails - 在 Mac OSX Snow Leopard 上安装 PostgreSQL for Rails 3 - 错误消息