Grafik-Objekte... wie geht das?

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

  • Grafik-Objekte... wie geht das?

    Hallo

    Ich möchte in einer App Grafiken einbinden, diese aber als Objekte verknüpfen
    (ähnlich wie man in der Objektorientierten Sprachen Klassen mit Daten und Funktionen erstellt).

    Beispiel:
    In einem Kartenspiel für jeden Spieler ein "Objekt", das den Namen des Spielers anzeigt, dessen Punktestand, eine kleine Grafik, etc...
    Da könnte man nun x-Mal ein Label für den Namen hinsetzen, x Labels für den Punktestand, x Grafiken, etc...
    Aber in einer objektorientierten Umgebung muss es doch auch einfacher gehen (einmal ein Objekt "Spieler" und dann nur das x mal im View-Controller platzieren).

    Beispiel 2:
    Wenn man im Hauptmenü Grafiken als Links zu einzelnen Spielen nutzt, und dann in jeder weiter Anzeigen wie Schwierigkeitsgrad,
    aktuellen Highscore, 1-5 Sterne für freigespielte Boni, etc möchte...
    Auch da wäre mir ein Objekt mit diesen Eigenschaften lieber, das ich dann x-mal auf dem View-Controller platziere, als jedes einzelne x-mal zu verwenden...

    Geht das überhaupt so, wie ich es mir vorstelle?
    Bin seit ner Woche am googeln, aber irgendwie nutze ich wohl nicht die richtigen Begrifflichkeiten, Schlagwörter, etc
  • Hm, so ganz kann ich Dir nicht folgen.

    Bei einer individuellen Positionierung der gewünschten Anzeige auf einem View könntest Du einen Custom View verwenden/erstellen, welcher die Werte des übergebenen bzw. gesetzten Objektes entsprechend anzeigt.

    Alternativ sind evtl. UITableView und UICollectionView das was Du suchst.
  • Ich denke auch, dass du TableViews/CollectionViews erstellst.

    Hier erstellst du einmal eine "Vorlage" für eine Zelle mit den Labels, Grafiken etc, welche dann jeweils nur mit Inhalt befüllt werden muss.
    Die TableView Programming Guide von Apple hilft hier weiter woher die TableView ihre Daten bezieht und wie man Zellen anpasst/erstellt.
  • Bei Table-Views kann man doch nur Auflistungen von Objekten untereinander erstellen,
    bei Collection View als "Raster", wie z.B. in einem Photo-Viewer oder in eShops...

    Ich möchte ein grafisches Standard-Objekt erstellen,
    eine Grafik (Bild des Spielers), darüber ein Label (Name), darunter zwei Label ("Score" und "Last Action"),
    daneben 3-4 Zusatzangaben (Labels über Spieleigenschaften) und über der Grafik des Spielers nochmal versteckte Grafiken,
    die nur ab und zu sichtbar sind (sagen wir mal 1-3 sterne für Zusatzerfolge)...
    Im Prinzip ist es ja egal, was in dem Objekt enthalten ist, es geht mir ums prinzip, wie so etwas geht...

    Denn all diese Einzelobjekte sollten als eine Gruppe/Klasse gebündelt werden,
    am besten sogar als Klasse damit man dem Objekt auch noch eigene Funktionen geben kann, statt sie x-mal zu programmieren.
    - Beispielsweise das gesamte Objekt über x/y Koordinaten positionieren (statt jedes einzelobjekt)
    - Grafik über den Namen des Spielers anzeigen,
    - Zusatzerfolge automatisch aus dem Score und den Zusatzangaben berechne
    - etc...

    Und diese "Objekte" möchte ich für jeden Spieler um einen Tisch herum platzieren,
    also abhängig der Anzahl der Spieler wird das irgendwo frei im View sein,
    passt also nicht in ein festes Raster wie bei Table-Views oder Collection-Views
  • bisher habe ich lediglich geschafft, eine neue klasse aus einer UIView zu erstellen
    und diese dann in dem View-Controller zu platzieren und x-mal zu kopieren.

    die skripte im hintergrund konnten dann wiederverwendet werden,
    aber in der anzeige musste man immer noch alles individuell anpassen

    eine änderung wie z.b. textgröße / positionen musste manuell überall nachgetragen werden
    oder das erste objekt x-mal erneut kopiert und umbenannt werden,
    sowas wie ein "mutterobjekt" erstellen, dessen änderungen sich automatisch auf die anderen auswirkt, fand ich nicht...
  • Wenn du den Interface Builder verwenden willst kannst du z.B. ein XIB erstellen, von welchem du dann im Code eine Instanz erstellen kannst.
    Die Basis View, welche die anderen Views beinhaltet, könnte ja eine eigene Klasse sein, welche zusätzliche Properties und Methoden bereit stellt.

    Was für ein Layout schwebt dir denn vor, dass dir eine Table- oder Collectionview nicht passt?
    TableViewCells können ja auch beliebig viele SubViews (Bilder, Labels, ect.) beinhalten.
    Ebenso kann man eine Subclass von UITableView erstellen, welche dann auch eigene properties und Methoden beinhalten kann.
  • Hallo,

    ich glaube, dass die Ziele, die Du Dir derweil steckst, zu hoch sind.
    Es wäre besser, wenn Du erstmal kleine Tutorials etc. durcharbeitest und Grundlagen erlernst.

    Die Antworten, die Du hier erhältst, setzen ein gewisses Level an Verständnis voraus.

    Wenn Du einfaches Projekt umsetzt, dann wächst Du selbst mit dem Können…

    Viele Grüße
  • @MCDan/Thyraz:
    das mit dem XIB ist ein guter tipp, da werde ich mich mal einarbeiten.

    @Thyraz:
    das endgültige Layout ist noch nicht klar, aber im grunde ein runder/ovaler spieltisch in der mitte,
    und dann die spieler gleichmässig aussen rum verteilt...
    ungefähr so wie bei den ganzen online-poker apps

    vielleicht habe ich TableView und CollectionView auch noch nicht ausreichend verstanden,
    aber ich war der meinung, die sind eher für eine starre tabellarische Ansicht...
  • Bei TableView ist das richtig, für CollectionViews kannst du dir aber dein eigenes Layout schreiben. Wenn ich mich richtig erinnere gibt es von Apple irgendwo Samplecode dazu. Der könnte genau richtig für dich sein, da dort ein Kreislayout erstellt wurde. Müsste glaube ich bei irgendwelchen WWDC Ressourcen dabei sein.
    Das Herz besitzt Gründe, die die Vernunft nicht kennt.
  • Also ganz ehrlich, wenn ich die Anforderung ("sowas wie ein Pokertisch") lese, würde ich nie und nimmer auf die Idee kommen und dazu einen Collection-View hernehmen. Ein paar Customviews in einem Superview platziert, wenn nötig evtl. den Superview auch noch erweitern und gut ist. Layout entweder selber machen oder mit Autolayout (kommt auf die Anforderungen drauf an)

    ciao

    gandhi
  • gandhi schrieb:

    Also ganz ehrlich, wenn ich die Anforderung ("sowas wie ein Pokertisch") lese, würde ich nie und nimmer auf die Idee kommen und dazu einen Collection-View hernehmen. Ein paar Customviews in einem Superview platziert, wenn nötig evtl. den Superview auch noch erweitern und gut ist. Layout entweder selber machen oder mit Autolayout (kommt auf die Anforderungen drauf an)

    Bei einer variablen Anzahl an Spielern könnte ein CollectionView durchaus Sinn machen. Zumal die Anzeige der einzelnen Spieler damit auch sehr leicht über eine Animation zu einem anderen Layout verändert werden kann.
  • MCDan schrieb:

    Bei einer variablen Anzahl an Spielern könnte ein CollectionView durchaus Sinn machen.

    Ja, könnte. Andererseits habe ich schon desöfteren die Erfahrung gemacht, dass man beim CollectionView und TableView manchmal ganz schön am Basteln ist, wenn es nicht "out-of-the-box" so funktioniert wie gewünscht. Und dann ist man mit was eigenem oft schneller am Ziel

    schönen Gruß

    gandhi
  • Ein wichtiger Vorteil eines Collection- oder Tableviews ist die Möglichkeit, mit einer relativ geringen View-Anzahl eine extrem große Anzahl von Objekten darzustellen. Wenn die Anzahl der Objekte relativ klein ist, braucht man es nicht unbedingt auf einen Collectionview umzusetzen. Andererseits kann die Implementierung eines Collectionview-Layouts durchaus einfacher sein, als die entsprechenden Restriktionen anzulegen.
    „Meine Komplikation hatte eine Komplikation.“
  • Bei der Anwendung würde ich mir wahrscheinlich auch keine Custom Layouts für UICollectionView ans Bein binden.

    Der Vorteil bei CollectionViews / TableViews ist ja normal eine Teilmenge eines größeren Inhalts irgendwie darzustellen.
    Es geht also fast immer um Scrollen oder Ähnliches.

    Bei einer kleinen Anzahl Spieler lässt sich das auch so recht einfach realisieren.

    Andererseits ist ein Layout welches einfach Elemente im Kreis anordnet und sich um die Positionierung kümmert sicher auch schnell geschrieben,
    und diese Logik müllt nicht zusätzlich den ViewController voll.