iOS-Bibliothek zur Darstellung von TMX-Dateien

Mit dem freien Mapeditor Tiled, gibt es ein sehr mächtiges Werkzeug für die Erstellung und Bearbeitung von Karten. Nachdem eine Karte erstellt wurde und diese im TMX-Format gesichert wurde, soll die Karte in den meisten Fällen genutzt werden. Für die unterschiedlichen Systeme existieren eine Reihe von Bibliotheken zur Nutzung und Darstellung von TMX-Karten.

Ein Demo zur Darstellung einer TMX-Karte im Simulator

Unter iOS und für die Nutzung mittels Swift eignet sich die Bibliothek SKTiled, welche auf GitHub zu finden ist. Mit SKTiled können die unterschiedlichen Varianten von TMX-Dateien, wie isometrische oder rechteckige Maps angezeigt werden. Neben den normalen Tiles, werden auch animierte Tiles in der Anzeige unterstützt. Die Bibliothek funktioniert unter iOS, tvOS und macOS. Lizenziert ist die Bibliothek unter der MIT-Lizenz und damit freie Software.

Probleme mit NativeScript und Xcode

NativeScript ist ein Framework für die Entwicklung von plattformübergreifenden Apps. Um aus dem NativeScript-Quellcode eine lauffähige iOS-App zu generieren, muss unter anderem Xcode installiert sein. Dabei kann es im Zusammenhang mit NativeScript und xcodebuild zu folgender Fehlermeldung kommen:

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

Gelöst werden kann dieses Problem auf dem Terminal mit dem Befehl:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Anschließend sollte bei der Ausführung des Befehls:

xcodebuild -version

folgende Ausgabe zu sehen sein:

Xcode 10.2
Build version 10E125

Damit ist das Problem gelöst und mit der Entwicklung mittels NativeScript kann fortgefahren werden.

Free Provisioning unter iOS 9

Wenn man eine selbstentwickelte App auf ein iOS-Gerät bringen wollte, so benötigte man bis iOS 9 zwingend einen kostenpflichtigen Apple Developer Account. Seit iOS 9 ist dies anders (siehe Einschränkungen der unterschiedlichen Accounttypen). Möchte man das sogenannte Free Provisioning nutzen so muss im ersten Schritt die Apple eigene Entwicklungsumgebung Xcode installiert werden.

‎Xcode
Preis: Kostenlos

Nachdem Xcode installiert wurde kann dieses gestartet werden und ein Testprojekt angelegt werden. Klickt man in der Verzeichnisansicht des Projektes auf den Projektnamen öffnet sich der General-Tab mit den entsprechenden Einstellungen. Hier findet sich unter Identity der Punkt Team unter welchem eine Apple-ID, bzw. ein damit verknüpfter (kostenloser) Apple-Developer Account hinzugefügt wird. Anschließend klickt man unter den darunter erscheinenden Fix issue-Button. Danach kann ein iOS-Gerät an den Mac angeschlossen werden und dieses in der Geräteauswahl neben den Start– und Stop-Buttons ausgewählt werden. Unter Umständen muss man nun noch einmal den Fix issue-Button drücken. Danach kann der Start-Button gedrückt werden und die Anwendung wird auf das iOS-Gerät übertragen.

Die App kann nicht gestartet werden

Die App kann nicht gestartet werden

Beim Start der App kommt es allerdings zu einem Sicherheitsproblem. Grund dafür ist das der Entwickleraccount auf dem iOS-Gerät freigeschaltet werden muss. Dazu öffnet man die Einstellungen unter iOS und sucht dort den Punkt Allgemein -> Profil. In diesem Punkt muss der entsprechende Entwickleraccount als vertrauenswürdig gekennzeichnet werden. Anschließend kann die übertragende App ohne Probleme gestartet werden.

Eine Statusbar-App für Mac OS X mittels Mono und Xamarin Studio entwickeln

Bei Mac OS X befindet sich oben am Bildschirmrand die Menü- und Statusbar. In diesem Artikel soll es darum gehen, eine solche Statusbar-App in Mono mittels des Xamarin Studios zu erstellen. Im ersten Schritt wird dazu ein neues MonoMac-Projekt im Xamarin-Studio angelegt. Wenn man dieses Projekt startet, findet man ein leeres Mac OS X-Fenster vor.

Ein neues MonoMac Projekt wird angelegt

Ein neues MonoMac Projekt wird angelegt

In dem neu angelegten Projekt wird eine neue Klasse mit dem Namen AppController angelegt. Diese wird mit folgendem Inhalt gefüllt:

using System;
using MonoMac.Foundation;
using MonoMac.AppKit;

namespace StatusBarApp
{
    [Register("AppController")]
    public partial class AppController : NSObject
    {
        public AppController()
        {
        }

        public override void AwakeFromNib()
        {
            var statusItem = NSStatusBar.SystemStatusBar.CreateStatusItem(30);
            statusItem.Menu = statusMenu;
            statusItem.Image = NSImage.ImageNamed("status");
            statusItem.HighlightMode = true;

            mcQuit.Activated+=(object sender, EventArgs e) =>
            {
                NSApplication.SharedApplication.Terminate(this);
            };
        }
    }
}

Damit die Anwendung kein Menü und kein Dock-Icon mehr besitzt, müssen wir die Info.plist bearbeiten. In dieser Datei muss ein neuer Schlüssel mit dem Namen Application is agent (UIElement) und dem Typ Boolean angelegt werden. Der Wert des neuen Schlüssels wird dabei auf YES gesetzt.

Der neue Schlüssel wird mit dem PList-Editor des Xamarin Studios hinzugefügt

Der neue Schlüssel wird mit dem PList-Editor des Xamarin Studios hinzugefügt

Nun öffnen wir die Datei MainMenu.xib, welche von Xamarin Studio in Xcode geöffnet wird. Hier ziehen wir ein neues Objekt vom Typ Menu in den Designer und entfernen alle Einträge bis auf einen. Dem verbliebenen Eintrag geben wir die Beschriftung Quit. Anschließend fügen wir ein Object hinzu und begeben uns in den Identity Inspector. Dort tragen wir bei Custom Class unter Class den Namen AppController ein. Das vorhandene Hauptmenü kann anschließend entfernt werden.

Das Design unter Xcode

Das Design unter Xcode

Nun muss das Menü mit dem Quellcode verbunden werden, dazu wird der Assistance Editor in Xcode geöffnet. Als Quelltext wird auf der rechten Seite des Editors die Datei AppController.h ausgewählt. Nun wird das Menü mittels gedrückter Steuerungstaste (Strg/Ctrl) in die Headerdatei gezogen. Damit legen wir ein Outlet an. Dieses bekommt den Namen statusMenu. Das gleiche wird anschließend mit dem Menüeintrag Quit gemacht. In diesem Fall wird dabei eine Action definiert, welche den Namen mcQuit bekommt. Nun kann Xcode wieder geschlossen werden.

Dem Projekt muss nun noch eine 29×22 Pixel große Grafik hinzugefügt werden. Die Grafik (in diesem Fall status.png) wird beim Laden als Icon für die Statusleiste genutzt. Als letzten Schritt können die Dateien MainWindow.cs, MainWindow.xib und MainWindowController.cs entfernt werden. Nachdem diese Objekte auch im AppDelegate entfernt wurden, ist die Anwendung fertig. Der Quelltext des Projektes kann sich auch heruntergeladen werden. Er kann dabei von jedermann frei verwendet (Public Domain) werden.

Cocoa Controls

Wenn man in Xcode eine iOS oder Mac OS X App schreibt, so ist manchmal auf bestimmte Controls angewiesen, welche nicht in den Standard BIbliotheken zu finden sind. Abhilfe schaffen hier sogenannte “Custom Controls”, welche überall im Netz zu finden sind.

cocoacontrols.com

cocoacontrols.com

Eine zentrale Anlaufstelle für solche Controls bietet dabei die Seite cocoacontrols.com. Dort sind die Controls nach Lizenzen, Betriebsystem und einigen anderen Kategorieren sortiert, so das man meist relativ schnell das passende Control findet.