Swift如何使导航中间部分图像和文本彼此相邻

时间:2015-11-09 16:40:05

标签: ios iphone swift

我已经在stackoverflow上搜索了很多,我还没能找到解决我的问题的方法,我需要将navigationBar放在中间部分图像和文本旁边,但显然我只能放置图像或只是文字

这是我的代码

    let nav = self.navigationController?.navigationBar
    nav?.barStyle = UIBarStyle.Default
    nav?.tintColor = UIColor.blackColor()
    let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
    imageView.contentMode = .ScaleAspectFit
    let image = UIImage(named: "icon_heart")
    imageView.image = image


    self.navigationItem.title = "App name"
    self.navigationItem.titleView = imageView

我知道它以这种方式只接受titleView的图像,但我不能想到一些正常的解决方案而且不知道它是否可能。此外,如果不可能,我怎么能制作空白图像并将图标图像和文本相邻绘制,然后附加新图像。

编辑: 根据awph的答案,我添加了这样的代码,它适用于我的情况,我的标题中总是有相同的字符

    let screenSize: CGRect = UIScreen.mainScreen().bounds

    let nav = self.navigationController?.navigationBar
    nav?.barStyle = UIBarStyle.Default
    nav?.tintColor = UIColor.blackColor()
    let imageView = UIImageView(frame: CGRect(x: screenSize.width / 2 - 40, y: 15, width: 20, height: 20))
    imageView.contentMode = .ScaleAspectFit
    let image = UIImage(named: "icon_heart")
    imageView.image = image
    nav!.addSubview(imageView)

    // label on top of the application that contain word
    var label = UILabel(frame: CGRectMake(0, 0, 0, 0))
    label.center = CGPointMake(screenSize.width / 2 - 15, 17)
    label.textColor = UIColor.blackColor()
    label.font = UIFont.systemFontOfSize(14)
    label.textAlignment = NSTextAlignment.Center
    label.text = "App Name"
    label.sizeToFit()
    nav!.addSubview(label)

1 个答案:

答案 0 :(得分:1)

你说得对,如文档中所述:

  

//用于代替标题的自定义视图。可以水平放大。仅在项目位于堆栈顶部时使用。

您需要做的是创建UIView,添加UImageView(包含您的图片)作为子视图(view.addSubview(imageView)),然后添加UILabelview.addSubview(label)