الهدف-C: صورة الخلفية والعنوان في شريط الملاحة
-
28-09-2019 - |
سؤال
في حاجة إلى صورة خلفية وعنوان في شريط الملاحة الخاص بي. للصورة التي أكتب فئة:
@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"];
ولكن بعد تعيين صورة الخلفية ، لدي مشكلة في العنوان.
في العرض الأول ، كل أعمال ، أرى صورة الخلفية والعنوان :-) ولكن في العرض التالي ، يختفي العنوان. فقط صورة الخلفية مرئية. ربما العنوان تحت الصورة؟
من الناحية الفنية ، من الممكن إظهار كليهما. مع هذه الخدعة تعمل:
إخفاء شريط التنقل قبل فتح ViewController التالي:
self.navigationController setNavigationBarHidden: نعم] ؛
عرض شريط التنقل في 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]];