UIBarButtonItem Konzeptfrage

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

  • UIBarButtonItem Konzeptfrage

    Ich mach mich grad dran eine etwas ältere iPad-App an aktuelle IOS Versionen anzupassen.
    Faszinierend, was da plötzlich alles an Warnings hochpoppt :rolleyes:
    Und was da alles an Leichen aus den Anfängerzeiten hochkommt <X

    ich habe eine Navigationbar. Da fülle ich links und rechts schön ordentlich mit einem Array von buttons (rightBarButtonItems)
    Die Buttons rufen jeweils ein popOver.

    So weit, so gut. Hier ein Beispiel:

    C-Quellcode

    1. UIImage *setupImage = [[UIImage imageNamed:@"setup.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    2. UIBarButtonItem *setupButtonItem = [[UIBarButtonItem alloc] initWithImage:setupImage style:UIBarButtonItemStylePlain target:self action:@selector(showPopOverSetup:)];
    3. setupButtonItem.tag = setupButtonItemTag;
    4. [setupButtonItem setTintColor:SMTintColor];
    5. [setupButtonItem setWidth:30.0];
    Meine Frage dazu: das setup.png ist 100x100 pixel groß. Faszinierend ist, dass die Höhe automatisch an nie NavBar angepasst wird. Aber eine Breite von "100" verschwendet wird. 100.png

    [setupButtonItem setWidth:30.0]; hat auch keine Auswirkung. Am liebsten würde ich ja eine Vektorgrafik einhängen, aber das geht wohl nur mit UIButton
    Wie macht man das mit dem UiBarbuttonItem richtig?

    Ich brauch das auch später für die popOvers wie zB:

    C-Quellcode

    1. - (IBAction)showPopOverSetup:(id)sender
    2. {
    3. UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"SMSetUp"];
    4. vc.modalPresentationStyle = UIModalPresentationPopover;
    5. vc.popoverPresentationController.sourceView = self.view;
    6. vc.popoverPresentationController.barButtonItem = sender;
    7. [self presentViewController:vc animated:YES completion:nil];
    8. }
    Oder muss ich jetzt tatsächlich das png 3 mal (@1 @2 @3) erstellen? und falls ja, mit welchen Dimensionen?
    Ich habe auch keine Loesung, aber ich bewundere das Problem!
    _____________________________________________________


    Hape42
  • hape42 schrieb:

    Ich mach mich grad dran eine etwas ältere iPad-App an aktuelle IOS Versionen anzupassen.
    Faszinierend, was da plötzlich alles an Warnings hochpoppt :rolleyes:
    Und was da alles an Leichen aus den Anfängerzeiten hochkommt <X

    ich habe eine Navigationbar. Da fülle ich links und rechts schön ordentlich mit einem Array von buttons (rightBarButtonItems)
    Die Buttons rufen jeweils ein popOver.

    So weit, so gut. Hier ein Beispiel:

    C-Quellcode

    1. UIImage *setupImage = [[UIImage imageNamed:@"setup.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    2. UIBarButtonItem *setupButtonItem = [[UIBarButtonItem alloc] initWithImage:setupImage style:UIBarButtonItemStylePlain target:self action:@selector(showPopOverSetup:)];
    3. setupButtonItem.tag = setupButtonItemTag;
    4. [setupButtonItem setTintColor:SMTintColor];
    5. [setupButtonItem setWidth:30.0];
    Meine Frage dazu: das setup.png ist 100x100 pixel groß. Faszinierend ist, dass die Höhe automatisch an nie NavBar angepasst wird. Aber eine Breite von "100" verschwendet wird. 100.png

    [setupButtonItem setWidth:30.0]; hat auch keine Auswirkung. Am liebsten würde ich ja eine Vektorgrafik einhängen, aber das geht wohl nur mit UIButton
    Wie macht man das mit dem UiBarbuttonItem richtig?

    Ich brauch das auch später für die popOvers wie zB:

    C-Quellcode

    1. - (IBAction)showPopOverSetup:(id)sender
    2. {
    3. UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"SMSetUp"];
    4. vc.modalPresentationStyle = UIModalPresentationPopover;
    5. vc.popoverPresentationController.sourceView = self.view;
    6. vc.popoverPresentationController.barButtonItem = sender;
    7. [self presentViewController:vc animated:YES completion:nil];
    8. }
    Oder muss ich jetzt tatsächlich das png 3 mal (@1 @2 @3) erstellen? und falls ja, mit welchen Dimensionen?
    Ja du solltest die richtigen Images erstellen und es gibt dafür mitlerweile richtig gute Tools wo du nur das große Bild angeben kannst und die skalieren alles runter und erstellen dann alles was du brauchst.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • hape42 schrieb:

    Thallius schrieb:

    Ja du solltest die richtigen Images erstellen und es gibt dafür mitlerweile richtig gute Tools wo du nur das große Bild angeben kannst und die skalieren alles runter und erstellen dann alles was du brauchst.
    Gruß

    Claus
    Hast Du da einen konkreten Tip?
    Boah, du kannst Fragen stellen :) Ist ewig her das ich eine App gemacht habe. Und gerade auf die schnelle habe ich es in meinem mitlerweile angesammelten Woost von Porgrammen auch nicht gefunden :)

    Aber sird sich schon jemand melden denke ich

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • hape42 schrieb:

    Oder muss ich jetzt tatsächlich das png 3 mal (@1 @2 @3) erstellen? und falls ja, mit welchen Dimensionen?
    Olá!

    Die Nummer lässt sich ganz einfach lösen. Hier mal mein Vorgehen:
    1. Image in einem Vektor-Zeichenprogramm erstellen (ich benutze "Graphic" mit einer Illustrationsgröße von 480 x 480 Pixel). Das erlaubt mir eine einfache Umrechnung bei ausreichender Größe. YMMV.
    2. Exportieren als PDF mit einer Skalierung von 5% bei 72 dpi (sic!); damit erhalte ich eine Vektorgrafik 24 x 24 Pixel, entsprechend der Target-Size aus den Apple HIGs
    3. Importieren ins Assets-Repository in Xcode und Umstellen der beiden folgenden Eigenschaften: Resizing = "Preserve Vector Data" und Scale = "Single Scale"; damit werden für iOS < 11 zur Build-Zeit die notwendigen Rastergrafiken (@2, @3 etc.) erstellt, während iOS 11 zur Laufzeit die Vektorgrafiken verwendet (Link)
    4. Im Code müssen die Images natürlich ohne Filename-Extension referenziert werden, also z. B. wie folgt

    Quellcode

    1. self.undoButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"TB_Undo"] style:UIBarButtonItemStylePlain target:self action:@selector(undo:)];
    2. self.navigationItem.leftBarButtonItems = @[self.splitViewController.displayModeButtonItem, self.undoButton];
    Klappt super bei "einfachen" Icons, die keine unterschiedlichen Detailierungen für die verschiedenen Auflösungen benötigen, ich stelle gerade eine gesamte App auf derartige Icons um.

    Grüße, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:

    Exportieren als PDF mit einer Skalierung von 5% bei 72 dpi (sic!); damit erhalte ich eine Vektorgrafik 24 x 24 Pixel, entsprechend der Target-Size aus den Apple HIGs
    :thumbsup:
    Ich hatte alles so! Fast :whistling: :saint:

    Wie kam ich nur auf die kranke Idee mein pdf mit 100x100 zu nutzen.
    Umgestellt auf 24x24 und schon funktioniert alles so wie ich wollte
    Ich habe auch keine Loesung, aber ich bewundere das Problem!
    _____________________________________________________


    Hape42