Я могу установить изображение как заголовок к UINavigationBar?

66
задан Leo Dabus 6 November 2017 в 04:56
поделиться

5 ответов

Можно использовать UIImageView для UINavigationItem.titleView свойство, что-то как:

self.navigationItem.titleView = myImageView;
128
ответ дан Anh Pham 24 November 2019 в 14:50
поделиться

Я изменил UINavigationBar+CustomImage.m для имения заголовка, все еще видимого пользователю. Просто используйте insertSubview: atIndex: вместо addSubview:

UINavigationBar+CustomImage.m

#import "UINavigationBar+CustomImage.h"

@implementation UINavigationBar (CustomImage)

- (void) setBackgroundImage:(UIImage*)image {
    if (image == NULL) return;
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake(0, 0, 320, 44);
    [self insertSubview:imageView atIndex:0];
    [imageView release];
}

- (void) clearBackgroundImage {
    NSArray *subviews = [self subviews];
    for (int i=0; i<[subviews count]; i++) {
        if ([[subviews objectAtIndex:i]  isMemberOfClass:[UIImageView class]]) {
        [[subviews objectAtIndex:i] removeFromSuperview];
    }
   }    
}

@end
5
ответ дан ck. 24 November 2019 в 14:50
поделиться

Я создал пользовательскую категорию для UINavigationBar следующим образом

UINavigationBar+CustomImage.h

#import <UIKit/UIKit.h>

@interface UINavigationBar (CustomImage)
    - (void) setBackgroundImage:(UIImage*)image;
    - (void) clearBackgroundImage;
    - (void) removeIfImage:(id)sender;
@end

UINavigationBar+CustomImage.m

#import "UINavigationBar+CustomImage.h"

@implementation UINavigationBar (CustomImage)

- (void) setBackgroundImage:(UIImage*)image {
    if (image == NULL) return;
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake(110,5,100,30);
    [self addSubview:imageView];
    [imageView release];
}

- (void) clearBackgroundImage {
    NSArray *subviews = [self subviews];
    for (int i=0; i<[subviews count]; i++) {
        if ([[subviews objectAtIndex:i]  isMemberOfClass:[UIImageView class]]) {
        [[subviews objectAtIndex:i] removeFromSuperview];
    }
   }    
}

@end    

, я вызываю его от своего UINavigationController

[[navController navigationBar] performSelectorInBackground:@selector(setBackgroundImage:) withObject:image];
8
ответ дан adam 24 November 2019 в 14:50
поделиться

Я нахожу, что прозрачный .png на уровне приблизительно 35 пкс в высоте работал хорошо.

- (void)awakeFromNib {

//put logo image in the navigationBar

UIImageView* img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]];
self.navigationItem.titleView = img;
[img release];

}
16
ответ дан nsantorello 24 November 2019 в 14:50
поделиться

Просто используйте

[navController.navigationBar insertSubview:myImage atIndex:0] ;

где myImage имеет тип UIImageView а navController имеет тип UINavigationController

0
ответ дан 24 November 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: