Hinzufügen UIToolbar mit zwei UIBarButtonItem eine UINavigationBar: schlechte UIToolbar und was ist mit iPhone 4
Ich bin nach dem zweiten Tipp von hier. In diesem Tipp zwei UIBarButtonItems sind zusammen in einer UIToolbar. Endlich, die UIToolbar ist Hinzugefügt, um die UINavigationBar. Nun zu meinen Problemen:
1) Eine weiße Linie auf der Oberseite des UIToolbar. Wenn ich erhöhen Sie die Größe der UIToolbar, der Farbverlauf ist falsch. Ich bin mit der folgenden Größe für die UIToolbar:
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 90, 44.01)];
Wie kann ich loswerden der weißen Linie? Siehe hier:
Das problem ist, dass es einen weißen statt einem grauen Linie. Wäre es Grau, alles wäre perfekt.
2) Was ist der Unterschied der display-Größe von iPhone 3 und iPhone 4? Muss ich prüfen, welche das iPhone verwendet und dann doppelt so groß?
Edit:
Den Schaltflächen erstellt werden, wie im folgenden Beispiel, ich nahm aus der oben genannten Webseite:
//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.:
Ich versuchte Unterklasse 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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt keine Garantie, dass UIToolbar zieht sich nahtlos im inneren eine UINavigationBar; dies könnte verantwortlich sein für die weiße Linie, die Sie sehen.
Könnten Sie in der Lage sein, um eine Unterklasse UIToolbar, so dass es nicht ziehen (d.h. überschreiben -drawRect:, um nichts tun).
UIToolbar
. Jetzt habe ich einen schwarzen hintergrund für die Symbolleiste. Die Funktionen, die ich implementieren, dass ich den gleichen Verlauf/Stil aus derUINavigationBar
.self.opaque = NO
,self.backgroundColor = [UIColor clearColor]
, undself.clearsContextBeforeDrawing = YES
iminitWithFrame:
oderinitWithCoder:
als angemessen.initWithFrame:
(siehe meine editierte Frage). Dies scheint zu funktionieren auf den ersten Blick. Ich habe nie Unterklassen ein UI-element vor. Muss ich bewusst etwas (Dinge, die nicht funktionieren oder so ähnlich)?1) ich kann nicht erklären, was die weiße Linie. Merkwürdig, dass es nur über die buttons. Wie werden die buttons erstellt? Auch, gibt es einen Grund, warum man die Einstellung der Höhe zu 44.01, anstatt nur 44? Ich bin nicht positiv, dass die Höhe legen Sie sich geehrt, in jedem Fall können Sie gezwungen werden, um 44 (jemand korrigiert mich wenn ich falsch Liege).
2) Sie müssen nicht alles tun, für iPhone 4, alles wird automatisch skaliert.
Haben Sie versuchen Sie, die Tasten nicht in einem container, der
UIView
und dann, indem es als ein Element, aber das manipulieren mitUIBarButtonSystemItemFlexibleSpace
? Ich meine, hinzufügen der einzelnen Tasten als unabhängiges Element.UIView
und ich habe nicht fügen Sie Sie als unabhängige Elemente. Stattdessen bin ich die Schaffung einesUIToolbar
erstellen Sie ein array von buttons, fügen Sie die Schaltflächen der Symbolleiste und schließlich fügen Sie der Symbolleiste die Navigationsleiste. Siehe meine editierte Frage für details.Einer UIToolbar ist entworfen, um verwendet werden, an der Unterseite des Iphone-Bildschirm, so dass, wenn Sie irgendwo sonst es wird versucht, eine edge-Effekt auf der oberen Seite. Um dies zu vermeiden, wird die Symbolleiste soll die Höhe um 2 Pixel größer dann Navbar Höhe. Bu dieser Zeit haben Sie eine andere Nebenwirkung, die bewirkt, dass ein Rand klar auf der unteren Seite der Navigationsleiste. (Die navbar in jedem Fall sucht die rightbarbuttonitem ausgerichtet, in der Mitte)