web-dev-qa-db-fra.com

iOS - UIBarButtonItem Identifier - option pour créer un bouton à crémaillère "paramètres"

Je veux créer un UIBarButtonItem pour représenter les paramètres de l'application (roue dentée). Actuellement, je ne peux trouver qu'une option pour créer UIBarButtonItem (Générateur d'interface> Inspecteur d'attributs> identifiant) tel que "Ajouter" (+), "Modifier", "Terminé", "Annuler", etc.

Je ne trouve pas d'option pour créer une icône de paramètres (roue dentée). Existe-t-il un moyen de le faire dans le générateur d'interface ou via le code?

Ou dois-je créer une image puis l'image?

45
user1046037

Unicode a plusieurs exemples notables que vous pouvez simplement copier et coller dans une déclaration de chaîne dans Xcode, ou utiliser le standard Unicode String Escape (\ uxxxx) et iOS est en fait assez fluide en ce qui concerne Unicode (je sais que certains caractères sont assez laids) , mais c'est Unicode pour toi '):

Caractère Unicode 'GEAR SANS HUB' (U + 26ED): http://www.fileformat.info/info/unicode/char/26ed/index.htm

Caractère Unicode 'GEAR' (U + 2699): http://www.fileformat.info/info/unicode/char/2699/index.htm

Ou préparez une image et définissez la propriété customView d'UIBarButtonItem en conséquence.

63
CodaFi

Composer CodaFi et ser1046037 répond:

Création d'UIBarButtonItem avec un caractère unicode comme titre.

Vous devez initialiser UIBarButtonItem avec le titre (initWithTitle:) pas l'élément système (initWithBarButtonSystemItem:).

Vous pouvez définir un titre personnalisé avec une chaîne (comme un caractère unicode).

Vous pouvez redimensionner le titre.

UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"\u2699" style:UIBarButtonItemStylePlain target:self action:@selector(showSettings)];

UIFont *customFont = [UIFont fontWithName:@"Helvetica" size:24.0];
NSDictionary *fontDictionary = @{NSFontAttributeName : customFont};
[settingsButton setTitleTextAttributes:fontDictionary forState:UIControlStateNormal];
15
GxocT

Pour obtenir l'icône de la roue dentée à l'aide de Swift, procédez comme suit dans viewDidLoad(), en supposant que vous avez câblé votre bouton de votre vue dans votre contrôleur. (Ex: @IBOutlet var settingsButton: UIBarButtonItem!)

    self.settingsButton.title = NSString(string: "\u{2699}") as String
    if let font = UIFont(name: "Helvetica", size: 18.0) {
        self.settingsButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
    }
6
Ε Г И І И О

Cela fonctionne pour moi dans Swift 3 et iOS 10 ...

let settingsButton = UIBarButtonItem(title: NSString(string: "\u{2699}\u{0000FE0E}") as String, style: .plain, target: self, action: #selector(settings))
let font = UIFont.systemFont(ofSize: 28) // adjust the size as required
let attributes = [NSFontAttributeName : font]
settingsButton.setTitleTextAttributes(attributes, for: .normal)

Voir le commentaire de @ hazernut dans la réponse acceptée. Sans ajouter \u{0000FE0E} à la chaîne, il apparaît comme un emoji et est immunisé contre tous les paramètres d'apparence. L'ajout de cette chaîne corrige cela.

6
Murray Sagal