سؤال

في حاجة إلى صورة خلفية وعنوان في شريط الملاحة الخاص بي. للصورة التي أكتب فئة:

@implementation UINavigationBar(MyNavigationBar)
- (void)setBackgroundImage {
    UIImageView *aTabBarBackground = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"navBarBackgrd.png"]];
    [self addSubview: aTabBarBackground];
    [self sendSubviewToBack: aTabBarBackground];
    [aTabBarBackground release];
}
@end

أسمي هذه الفئة في AppDelegate الخاص بي ولدي صور خلفية في التطبيق بأكمله:

[navigationController.navigationBar setBackgroundImage]; 

كل ViewController له عنوان:

[self setTitle:@"MyTitle"];

ولكن بعد تعيين صورة الخلفية ، لدي مشكلة في العنوان.

في العرض الأول ، كل أعمال ، أرى صورة الخلفية والعنوان :-) ولكن في العرض التالي ، يختفي العنوان. فقط صورة الخلفية مرئية. ربما العنوان تحت الصورة؟

من الناحية الفنية ، من الممكن إظهار كليهما. مع هذه الخدعة تعمل:

  1. إخفاء شريط التنقل قبل فتح ViewController التالي:

    self.navigationController setNavigationBarHidden: نعم] ؛

  2. عرض شريط التنقل في ViewController التالي:

    Self.NavigationController setNavigationBarHidden: لا] ؛

الآن ، الصورة والعنوان مرئية ، لكن هذا الحل ليس هو الأفضل ؛-)

هل كانت مفيدة؟

المحلول

حصلت عليه!

@implementation UINavigationBar(MyNavigationBar)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"navBarBackgrd.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

نرى صورة الخلفية لعرض التنقل

نصائح أخرى

بعد iOS5 ، يجب عليك القيام بذلك ، على سبيل المثال في AppDelegate


 UIImage *img = [[UIImage imageNamed:@"image.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:0 green: 0 blue:0  alpha:1]];

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top