Cela a fait l'affaire pour moi. Merci! Je me méfie de le faire. C'est l'accès à un sans-papiers propriété de la classe. Et je ne suis pas sûr que de le faire en passant par "valueForKey" est assez pour vous éviter d'être rejeté à partir de l'App Store. Lillywhite: -valueForKey: est documenté, méthode publique. Le KVC API fournit un moyen pour éviter toute variable d'instance, de l'accès, de sorte que si la valeur est accessible, aucune action n'a été prise pour empêcher l'accès. Un souci peut-être frapper sur une valeur non définie dans une future version d'iOS. Pour répondre à cette préoccupation, vous pouvez encapsuler l'appel dans un try-bloc. Aussi, même si vous sentez que vous ne pouvez pas l'utiliser dans une application destinée à l'App Store, cela ne signifie pas que quelqu'un ciblage jailbreaké dispositifs ne pouvais pas utiliser cette approche dans leur application. Quelqu'un a soumis une application et qu'il avait approuvé l'utilisation de cette technique? Je ne vois pas pourquoi Apple ne rejeter une application pour cela, mais je voulais voir si quelqu'un a vécu ça.
J'ai eu le même problème. Après beaucoup d'essais, j'ai trouvé quelque chose qui a travaillé!
Dans mon cas précis, j'avais besoin d'obtenir la largeur de la première UIBarButtonItem de la manette de navigation de la barre d'outils, mais vous pouvez facilement l'adapter à vos goûts:
UIToolbar*toolbar = self.navigationController.toolbar;//or whatever toolbar you needUIView*view =(UIView*)[toolbar.subviews objectAtIndex:0];//0 for the first itemdouble itemWidth = view.bounds.size.width;
Veuillez noter: j'ai eu à utiliser ce code dans le viewDidLoad pour obtenir une valeur correcte. Dans l'init elle retourne 0.0
Dans le cas où vous êtes intéressé dans la largeur sur un élément particulier, le plus simple est d'avoir deux IBOutlets: l'une pour le bouton et l'autre correspondant au bouton de la barre d'élément. Au lieu de lire le bouton de la barre d'élément de largeur, vous pourrez le lire sur le bouton de largeur.
Cette approche, bien sûr, ne fonctionnera pas si vous voulez par exemple faire la somme des largeurs dans une boucle. (En passant, le 1er bouton commence à x=12 et la distance entre deux boutons de 10, sauf si vous faites quelque chose de délicat.) Bien sûr, vous pouvez avoir deux tableaux, mais c'est juste lourd.
Quoi à ce sujet:
Je me méfie de le faire. C'est l'accès à un sans-papiers propriété de la classe. Et je ne suis pas sûr que de le faire en passant par "valueForKey" est assez pour vous éviter d'être rejeté à partir de l'App Store.
Lillywhite:
-valueForKey:
est documenté, méthode publique. Le KVC API fournit un moyen pour éviter toute variable d'instance, de l'accès, de sorte que si la valeur est accessible, aucune action n'a été prise pour empêcher l'accès. Un souci peut-être frapper sur une valeur non définie dans une future version d'iOS. Pour répondre à cette préoccupation, vous pouvez encapsuler l'appel dans un try-bloc. Aussi, même si vous sentez que vous ne pouvez pas l'utiliser dans une application destinée à l'App Store, cela ne signifie pas que quelqu'un ciblage jailbreaké dispositifs ne pouvais pas utiliser cette approche dans leur application.Quelqu'un a soumis une application et qu'il avait approuvé l'utilisation de cette technique? Je ne vois pas pourquoi Apple ne rejeter une application pour cela, mais je voulais voir si quelqu'un a vécu ça.
OriginalL'auteur Jeremy W. Sherman
J'ai eu le même problème. Après beaucoup d'essais, j'ai trouvé quelque chose qui a travaillé!
Dans mon cas précis, j'avais besoin d'obtenir la largeur de la première UIBarButtonItem de la manette de navigation de la barre d'outils, mais vous pouvez facilement l'adapter à vos goûts:
Veuillez noter: j'ai eu à utiliser ce code dans le viewDidLoad pour obtenir une valeur correcte. Dans l'init elle retourne 0.0
Arthur
OriginalL'auteur pragmatic
Dans le cas où vous êtes intéressé dans la largeur sur un élément particulier, le plus simple est d'avoir deux IBOutlets: l'une pour le bouton et l'autre correspondant au bouton de la barre d'élément. Au lieu de lire le bouton de la barre d'élément de largeur, vous pourrez le lire sur le bouton de largeur.
Cette approche, bien sûr, ne fonctionnera pas si vous voulez par exemple faire la somme des largeurs dans une boucle. (En passant, le 1er bouton commence à x=12 et la distance entre deux boutons de 10, sauf si vous faites quelque chose de délicat.) Bien sûr, vous pouvez avoir deux tableaux, mais c'est juste lourd.
OriginalL'auteur 18446744073709551615
Il y a toujours plus d'un sous-vue dans une barre d'outils.
En plus de arthurs de réponse, vous pouvez effectuer une itération sur eux et de vérifier le type de.
OriginalL'auteur user4091416
Obtenir directement la largeur de la barre de bouton de l'élément.
OriginalL'auteur Chirag Kothiya