L'ajout de UIToolbar avec deux UIBarButtonItem à un UINavigationBar: pauvres UIToolbar et ce sur l'iPhone 4
Je suis à la suite de la deuxième extrémité de ici. Dans ce conseil, deux UIBarButtonItems sont mis ensemble dans un UIToolbar. Enfin, la UIToolbar est ajouté à la UINavigationBar. Maintenant, pour mes problèmes:
1) Une ligne blanche sur le dessus de la UIToolbar. Si j'augmente la taille de la UIToolbar, le gradient est faux. Je suis en utilisant la taille suivante pour la UIToolbar:
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 90, 44.01)];
Comment puis-je me débarrasser de la ligne blanche? Voir ici:
Le problème est qu'il y a un blanc à la place d'une ligne grise. Si il serait gris, tout serait parfait.
2) qu'est Ce que la différence de la taille de l'écran de l'iPhone 3 et iPhone 4? Dois-je vérifier l'iPhone est le double de la taille?
Edit:
Les boutons sont créés comme dans l'exemple suivant, j'ai pris à partir du site web mentionné ci-dessus:
//create a toolbar to have two buttons in the right
UIToolbar* tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 133, 44.01)];
//create the array to hold the buttons, which then gets added to the toolbar
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];
//create a standard "add" button
UIBarButtonItem* bi = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:NULL];
bi.style = UIBarButtonItemStyleBordered;
[buttons addObject:bi];
[bi release];
//create a spacer
bi = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[buttons addObject:bi];
[bi release];
//create a standard "refresh" button
bi = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
bi.style = UIBarButtonItemStyleBordered;
[buttons addObject:bi];
[bi release];
//stick the buttons in the toolbar
[tools setItems:buttons animated:NO];
[buttons release];
//and put the toolbar in the nav bar
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
[tools release];
@ tc.:
J'ai essayé de la sous-classe UIToolbar
.
//MyToolbar.h
#import <Foundation/Foundation.h>
@interface MyToolbar : UIToolbar {
}
@end
//MyToolbar.m
#import "MyToolbar.h"
@implementation MyToolbar
- (void)drawRect:(CGRect)rect {
//do nothing
}
- (id)initWithFrame:(CGRect)aRect {
if ((self = [super initWithFrame:aRect])) {
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
self.clearsContextBeforeDrawing = YES;
}
return self;
}
@end
OriginalL'auteur testing | 2010-09-24
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucune garantie que UIToolbar attire de façon transparente à l'intérieur d'un UINavigationBar; ce pourrait être responsable de la ligne blanche que vous voyez.
Vous pourriez être en mesure à la sous-classe UIToolbar de sorte qu'il ne dessine pas (c'est à dire remplacer -drawRect: pour ne pas faire n'importe quoi).
UIToolbar
. Maintenant, j'ai un fond noir pour ma barre d'outils. Les fonctions que j'ai à mettre en œuvre des que je reçois le même dégradé/style de laUINavigationBar
.Hmmm. Essayez en outre le réglage de
self.opaque = NO
,self.backgroundColor = [UIColor clearColor]
, etself.clearsContextBeforeDrawing = YES
dansinitWithFrame:
ouinitWithCoder:
tant que de besoin.Maintenant, j'ai remplacé
initWithFrame:
(voir mon édité question). Cela semble fonctionner à première vue. Je n'ai jamais sous-classé un élément de l'INTERFACE utilisateur avant. Dois-je être au courant de quelque chose (des choses qui ne fonctionnent pas ou quelque chose comme ça)?Vous devez être conscient de la façon dont UIToolbar fait de son dessin. Il ne semble pas être documentées, de sorte que vous devez deviner. Cela pourrait changer dans le futur OS de presse. Cependant, la UIToolbar docs ne pas vous dire pas à la sous-classe, de sorte que vous êtes raisonnablement sûr.
OriginalL'auteur tc.
1) je ne peux pas expliquer la ligne blanche. Curieux que c'est seulement au-dessus de vos boutons. Comment sont les boutons créés? Aussi, est-il une raison pour laquelle vous êtes le réglage de la hauteur à 44.01, plutôt que de seulement 44? Je ne suis pas positif que la hauteur que vous définissez est à l'honneur dans tous les cas, ils peuvent être forcés à 44 (quelqu'un me corrige si je me trompe).
2) Vous n'avez pas à faire quoi que ce soit pour l'iPhone 4, tout est mis à l'échelle automatiquement.
OriginalL'auteur zpasternack
Avez-vous essayez d'ajouter ces boutons pas à l'intérieur d'un conteneur
UIView
et puis l'ajout d'un élément mais à manipuler avecUIBarButtonSystemItemFlexibleSpace
? Je veux dire l'ajout de chacun de ces boutons comme un élément indépendant.UIView
et je n'ai pas ajouter comme des éléments indépendants. Au lieu de cela, je suis en création d'unUIToolbar
, créer un tableau de boutons, ajouter les boutons de la barre d'outils et enfin ajouter la barre d'outils de la barre de navigation. Voir mon édité question pour plus de détails.OriginalL'auteur knuku
Un UIToolbar est conçu pour être utilisé au bas de l'écran de l'Iphone, donc si vous utilisez un autre endroit, il va essayer de faire un effet de bord sur le dessus. Pour éviter cela, la barre d'outils de la hauteur doit être de 2 pixels plus gros la barre de navigation de hauteur. Bu cette fois, vous aurez un autre effet secondaire qui provoque un avantage clair sur la face inférieure de la barre de navigation. (La barre de navigation en tout cas localise le rightbarbuttonitem que alignées au milieu)
OriginalL'auteur mehmed.ali