Hallo Forum,
ich möchte gerne in meiner macOS Anwendung ein Textfeld mit Progressbar realisieren um optisch den jeweiligen Fortschritt anzuzeigen.
Die Umsetzung, hier als Lösungsansatz bei (Stackoverflow), ist ein Textfeld mit integriertem drawRect.
Das läuft soweit auch. Beim Start werden voreingestellte Werte gezeichnet, die Variablen inProgress und progress werden auch überwacht,
jedoch werden die Änderungen der Variable progress nicht gezeichnet. Wer kann helfen?
[Blockierte Grafik: http://www.icodeblog.de/osxforum/pic1.png]
Hier der Quellcode der abgeleiteten Klasse von NSTextField
Alles anzeigen
ich möchte gerne in meiner macOS Anwendung ein Textfeld mit Progressbar realisieren um optisch den jeweiligen Fortschritt anzuzeigen.
Die Umsetzung, hier als Lösungsansatz bei (Stackoverflow), ist ein Textfeld mit integriertem drawRect.
Das läuft soweit auch. Beim Start werden voreingestellte Werte gezeichnet, die Variablen inProgress und progress werden auch überwacht,
jedoch werden die Änderungen der Variable progress nicht gezeichnet. Wer kann helfen?
[Blockierte Grafik: http://www.icodeblog.de/osxforum/pic1.png]
Hier der Quellcode der abgeleiteten Klasse von NSTextField
Quellcode
- class ToolbarTextField: NSTextField {
- var button = NSButton()
- var inProgress: Bool = false {
- didSet {
- needsDisplay = false
- self.button.hidden = !self.inProgress
- self.button.needsDisplay = true
- self.button.enabled = true
- display()
- }
- }
- var progress: CGFloat = 0.4 {
- didSet {
- self.progress = 0.0
- needsDisplay = true
- self.button.needsDisplay = true
- display()
- displayIfNeeded()
- }
- }
- var viewController: NSViewController? = nil {
- didSet {
- self.button.target = self.viewController
- //self.button.action = Selector("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)
- }
- }