ios - 如何将图像放在 UIViewController 的导航栏中心?

标签 ios uinavigationbar

我在 UIViewController 的 viewDidLoad 中使用了这段代码。我没有错误。图像存在。我得到背景但不是图像。图片是一种标志。

if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {

    /* Background of navigationBar. */
    UIImage * navigationBarImage = [UIImage imageNamed:@"01_navbar_portrait.png"];
    [self.navigationController.navigationBar setBackgroundImage:navigationBarImage forBarMetrics:UIBarMetricsDefault];

    /* Image in navigationBar */
    UIImage * logoInNavigationBar = [UIImage imageNamed:@"01_logo.png"];
    UIImageView * logoView = [[UIImageView alloc] init];
    [logoView setImage:logoInNavigationBar];
    self.navigationController.navigationItem.titleView = logoView;

}

最佳答案

UINavigationController 通过查看导航堆栈上最顶层 View Controller 的 navigationItem 属性来管理导航栏。因此,要将 View 更改为 Logo ,您需要在使用 Logo 的 View Controller (即 Root View Controller 或另一个被压入堆栈的 View Controller )中进行设置。

在 View Controller 的 viewDidLoad 中做这样的事情:

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

在您的情况下,您设置了错误的导航项:

// Oops...
self.navigationController.navigationItem.titleView = logoView;
// Should be this:
self.navigationItem.titleView = logoView;

关于ios - 如何将图像放在 UIViewController 的导航栏中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15199980/

相关文章:

ios - <Error> : ImageIO: PNG [5C][30][0D]I: invalid chunk type mean? 是什么意思

ios - 如何根据国家/地区将印度时间转换为其他时间?

iOS 11、xCode 9、Swift 4 导航栏按钮如果放在 View 内则不可触摸?

ios - Swift 自定义导航 Controller 类

css - 导航栏定位左上角

ios - 我的应用程序在xcode 11.4中找不到sirikit intentdefinition类

iphone - 调整 UIScrollView 的大小

ios - 第二个 ViewController 中的错误 'doneAccessory' 的重新声明无效

ios - UINavigationBar 后退按钮重复两次

ios - iOS 13和Xcode 11-UINavigationBar中断了大标题的滚动