【问题标题】:Set an image as a title in UINavigationBar in swift 4在swift 4中将图像设置为UINavigationBar中的标题
【发布时间】:2018-09-13 04:44:19
【问题描述】:

我有以下导航栏代码,它为标题设置了“标题”一词,但希望它成为我的徽标。

     navigationbar = UINavigationBar(frame: CGRect(x: 0, y: 20, width: self.view.bounds.width, height: 44));

    navigationbar.barTintColor = UIColor(red: 247/255, green: 247/255, blue: 247/255, alpha: 1.0);

    let title = UINavigationItem(title: "Title");

    navigationbar.setItems([title], animated: false);

    self.view.addSubview(navigationbar);

如果我想要一个方形徽标,@1x、@2x 和 @3x 的像素大小应该是多少?徽标也是我的应用图标。

【问题讨论】:

  • 出于好奇,您为什么不将其设置在情节提要中?为什么在地球上你会在导航栏中手动设置导航项?
  • 因为我想学习sdk的根源
  • 你需要标题和图片吗?还是只有导航栏中的图片?
  • 只有图片在中心(无标题)
  • 您不应该将您的应用图标添加到您的应用界面。如果你这样做,它将不会被发布。欲了解更多信息,请阅读:HIG

标签: ios swift uinavigationbar swift4 ios11


【解决方案1】:

不完全确定这是否是您想要实现的目标,但堆栈中已经有一些建议。

这是一个流行的:

let logo = UIImage(named: "logo") // Or logo.png if you haven't added it to assets
let imageView = UIImageView(frame: CGRect(x:0, y:0, width:50.0, height:50.0))
imageView.image = logo
imageView.contentMode = .scaleAspectFit
self.navigationItem.titleView = imageView

也可以使用这种方法:

func addNavBarImage() {

    let navController = navigationController!

    let image = UIImage(named: "logo.png") //Your logo url here
    let imageView = UIImageView(image: image)

    let bannerWidth = navController.navigationBar.frame.size.width
    let bannerHeight = navController.navigationBar.frame.size.height

    let bannerX = bannerWidth / 2 - (image?.size.width)! / 2
    let bannerY = bannerHeight / 2 - (image?.size.height)! / 2

    imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
    imageView.contentMode = .scaleAspectFit

    navigationItem.titleView = imageView
}

来自question的答案。

【讨论】:

  • 它不会使徽标居中
  • @cdub 使用 X 和 Y 和/或宽度和高度来改变 UIImageView 的位置,或者使用内容模式 .center 或其他模式(如果是图像问题) .听起来你已经工作了:-)
  • @cdub 你调整了这些值吗?
  • 我已经使用了这个答案中提到的第一种技术,它在导航栏中将徽标居中。
【解决方案2】:

试试这个

// top-logo = your image name 
if let logo = UIImage(named: "top-logo"){
    let imageView = UIImageView(image:logo)
    self.navigationItem.titleView = imageView
}

输出:

【讨论】:

  • @cdub 你能告诉我你的图片尺寸是多少吗?
猜你喜欢
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
  • 2012-01-21
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
相关资源
最近更新 更多