आप इसे कितनी बुरी तरह से चाहते हैं? और, आप कितनी पतली (या मोटी) अपनी नौसेना बनाना चाहते हैं?
एक दृष्टिकोण नाबाबार के परिवर्तन को स्केल करने और अनुवाद करने के लिए सेट करना होगा। यदि आप इसे बहुत अधिक स्केल करते हैं तो शीर्षक और बटन टेक्स्ट विजयी दिखेंगे, लेकिन अगर आपको केवल कुछ पिक्सेल शेव करने की आवश्यकता है तो आप ठीक हो सकते हैं।
और कोड है कि इस उत्पादन:
यहाँ पूरी ऊंचाई (33 पिक्सल लंबा) के 75% होने के लिए यह स्केलिंग का परिणाम है
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title = @"Thin Navigation Bar";
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle: @"Press Me" style:UIBarButtonItemStyleBordered target: nil action: NULL ] autorelease];
CGFloat scale = .75;
CGFloat cy = 44.0 - (44.0 * scale);
self.navigationController.navigationBar.transform = CGAffineTransformScale(CGAffineTransformMakeTranslation(0, -cy/2.0), 1.0, scale) ;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CGFloat scale = .75;
CGFloat cy = 44.0 - (44.0 * scale);
CGRect r = self.view.frame;
r.origin.y -= cy;
r.size.height += cy;
self.view.frame = r;
}
अब, यह करता है कई समस्याएं हैं, जो हल हो सकती हैं या नहीं भी हो सकती हैं। # 1 यह है कि आप UINavigationController के साथ Navbar और दृश्य-नियंत्रक दृश्यों को आकार देने और स्थिति के लिए लड़ रहे हैं। इस तकनीक का उपयोग करने वाले दृश्य नियंत्रकों के बीच एनिमेटिंग शायद अजीब दिखने जा रही है।
मैं उत्सुक अगर आप से संबंधित मुद्दों का समाधान कर सकता हो जाएगा ...
एक आखिरी सोचा: यदि आप एक UINavigationController का उपयोग तो वहाँ वास्तव में squished पाठ की तुलना में इस दूसरे के साथ मुद्दों की एक पूरी बहुत कुछ नहीं कर रहे हैं न तो । या, आप एक नेविगेशन नियंत्रक का उपयोग कर सकते हैं लेकिन डिफ़ॉल्ट navbar छुपाएं, और अपने प्रत्येक बच्चे-दृश्य नियंत्रक दृश्यों में पतली navbar जोड़ें। तुम भी उपवर्ग UINavigationBar सकता है और भीतर से बदलने के लिए सेट:
@interface TSThinNavBar : UINavigationBar
{
}
@end
@implementation TSThinNavBar
// assuming we'll always be constructed from a nib
- (id) initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder: aDecoder];
if (self != nil)
{
CGFloat scale = .75;
CGFloat cy = 44.0 - (44.0 * scale);
self.transform = CGAffineTransformScale(CGAffineTransformMakeTranslation(0, -cy/2.0), 1.0, scale) ;
}
return self;
}
@end
यह नहीं शायद आसान सिर्फ अपने स्वयं के कस्टम नेविगेशन पट्टी और संबद्ध बार बनाने के लिए है है आइटम? अधिक जानकारी के लिए इस लिंक पर मेरा उत्तर देखें: http://stackoverflow.com/questions/6398869/how-to-assign-my-customnavigationbar-to-a-uinavigationcontroller/6398891#6398891 – Luke