NSImageView Bilderwechsel über einen Timer realisieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSImageView Bilderwechsel über einen Timer realisieren

    Hallo Community,

    ich soll ein kleines einfaches Programm schreiben, dass in einem regelmäßigem Abstand zwei unterschiedliche Bilder in einer NSImageView anzeigen soll. Ich soll dafür sorgen, dass der Inhalt der NSImageView nach Ablauf einer von mir bestimmten Zeit getauscht werden soll. Der Anwender soll die beiden Bilder selbst über entsprechende Dialoge auswählen können.
    Ich habe das ganze über zwei Timer gelöst. Bin mir aber nicht sicher ob das so die beste Variante ist.
    Ich bin auch noch nicht fertig mit dem Programm, es fehlen noch ein paar Sachen, es geht mir hier nur um den Wechsel der beiden Bilder in der NSImageView.
    Hier ist mein Code:

    Quellcode

    1. import Cocoa
    2. class ViewController: NSViewController {
    3. @IBOutlet weak var bildAnzeige: NSImageView!
    4. @IBOutlet weak var bildName1: NSTextField!
    5. @IBOutlet weak var bildName2: NSTextField!
    6. var timerBild1: Timer!
    7. var timerBild2: Timer!
    8. func meinDialog(message: String, information: String) {
    9. let meinDialog: NSAlert = NSAlert()
    10. meinDialog.messageText = message
    11. meinDialog.informativeText = information
    12. meinDialog.runModal()
    13. }
    14. @objc func bildAnzeige1() {
    15. if let meinBild1 = NSImage(contentsOfFile: bildName1.stringValue) {
    16. bildAnzeige.image = meinBild1
    17. }
    18. }
    19. @objc func bildAnzeige2() {
    20. if let meinBild2 = NSImage(contentsOfFile: bildName2.stringValue) {
    21. bildAnzeige.image = meinBild2
    22. }
    23. }
    24. @IBAction func bildDatei1(_ sender: Any) {
    25. let meinBildDialog: NSOpenPanel = NSOpenPanel()
    26. meinBildDialog.prompt = "Öffnen"
    27. meinBildDialog.allowedFileTypes = NSImage.imageTypes
    28. if meinBildDialog.runModal() == NSApplication.ModalResponse.OK {
    29. let bildDatei1 = meinBildDialog.url?.path
    30. bildName1.stringValue = bildDatei1!
    31. }
    32. }
    33. @IBAction func bildDatei2(_ sender: Any) {
    34. let meinBildDialog: NSOpenPanel = NSOpenPanel()
    35. meinBildDialog.prompt = "Öffnen"
    36. meinBildDialog.allowedFileTypes = NSImage.imageTypes
    37. if meinBildDialog.runModal() == NSApplication.ModalResponse.OK {
    38. let bildDatei2 = meinBildDialog.url?.path
    39. bildName2.stringValue = bildDatei2!
    40. }
    41. }
    42. @IBAction func startAnimation(_ sender: Any) {
    43. bildAnzeige1()
    44. timerBild2 = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector (bildAnzeige2), userInfo: nil, repeats: true)
    45. timerBild1 = Timer.scheduledTimer(timeInterval: 6, target: self, selector: #selector (bildAnzeige1), userInfo: nil, repeats: true)
    46. }
    47. @IBAction func beendenClicked(_ sender: Any) {
    48. NSApplication.shared.terminate(self)
    49. }
    50. override func viewDidLoad() {
    51. super.viewDidLoad()
    52. // Do any additional setup after loading the view.
    53. }
    54. override var representedObject: Any? {
    55. didSet {
    56. // Update the view, if already loaded.
    57. }
    58. }
    59. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Smoothcode ()

  • @MCDan

    Ich habe es jetzt mal mit einem Timer ausprobiert. Mein Gedanke war, das erste Bild anzeigen zu lassen, und mit dem Timer das zweite Bild einblenden zu lassen. Habs nicht hinbekommen. Das zweite Bild erscheint zwar, verschwindet aber nicht.
    Ich werde es jetzt einmal übers Array versuchen.