我今天发帖是因为我想获得与位于工具栏内的 Xcode 7 进度指示器类似的结果。
蓝色条显示在看似 NSTextField 的下方,我认为这将是一个普通的 UI 元素,但我在对象库中找不到类似的东西。
如何才能达到类似的结果,最好是使用原生的 NSProgressIndicator?
提前致谢。
编辑:我通过使用这个老问题中的答案设法得到了类似的东西:NSTextField like safari address bar . 但在我调整窗口大小以强制重新绘制文本字段之前,背景变为白色(而不是浅灰色渐变)。我应该在哪里放置
实际上,在我在 self.needsDisplay 以便在初始化后刷新文本字段?将它放在 awakeFromNib 的末尾是行不通的。didSet 中添加了一些 needsDisplay 之后,效果非常好,所以我猜它已经解决了!如果您想将它作为按钮的目标,请不要忘记在某个时候设置 viewController 属性。
import Cocoa
class ToolbarTextField: NSTextField {
var button = NSButton()
var inProgress: Bool = false {
didSet {
self.needsDisplay = true
self.button.hidden = !self.inProgress
self.button.needsDisplay = true
self.button.enabled = true
}
}
var progress: CGFloat = 0.0 {
didSet {
self.needsDisplay = true
self.button.needsDisplay = true
}
}
var viewController: NSViewController? = nil {
didSet {
self.button.target = self.viewController
self.button.action = "cancelLoadingButtonClicked:"
}
}
override func awakeFromNib() {
let buttonFrame = NSMakeRect(0.0, 0.0, 16.0, 16.0)
self.button = NSButton(frame: buttonFrame)
self.button.setButtonType(NSButtonType.MomentaryChangeButton)
self.button.bezelStyle = NSBezelStyle.RegularSquareBezelStyle
self.button.bordered = false
self.button.imagePosition = NSCellImagePosition.ImageOnly
self.button.image = NSImage(named: NSImageNameStopProgressFreestandingTemplate)
self.button.hidden = !self.inProgress
self.addSubview(self.button)
}
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
if self.inProgress {
let buttonFrame = NSMakeRect(self.bounds.size.width - 22, ceil((self.bounds.size.height / 2) - 9), 16.0, 16.0)
self.button.frame = buttonFrame
var progressRect = self.bounds
progressRect.origin.y = progressRect.size.height - 4
progressRect.size.height = 2
progressRect.size.width *= self.progress
NSColor.alternateSelectedControlColor().set()
NSRectFillUsingOperation(progressRect, NSCompositingOperation.CompositeSourceIn)
}
}
}
最佳答案
其实我是自己搞定的,请看题中的代码。
不要忘记在初始化文本字段后将 viewController 属性设置为您的按钮目标(在我的例子中是 View Controller )。
关于swift - Cocoa:工具栏文本字段内的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35467454/
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U
我几天前在我的rubyonrails2.3.2上安装了Sphinx和Thinking-Sphinx,基本搜索效果很好。这意味着,没有任何条件。现在,我想用一些条件过滤搜索。我有公告模型,索引如下所示:define_indexdoindexestitle,:as=>:title,:sortable=>trueindexesdescription,:as=>:description,:sortable=>trueend也许我错了,但我注意到只有当我将:sortable=>true语法添加到这些属性时,我才能将它们用作搜索条件。否则它找不到任何东西。现在,我还在使用acts_as_tag