我正在尝试使用Swift将图像徽标作为标题放置在iOS应用的导航栏中。我将图像包含在资源文件夹(Images.xcassets)中。我调查了this问题,但没有运气。
以下是我的代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let logo = UIImage(named: "logo") as UIImage
let imageView = UIImageView(image:logo)
imageView.frame.size.width = 200;
imageView.frame.size.height = 45;
self.navigationItem.titleView = imageView
}
...
}
答案 0 :(得分:4)
我设法创建了一个Swift解决方案。不确定它是否是最佳方式,但它确实有效。我基本上翻译了nerowolfe的代码,并使用了addSubview函数。
class NavigationBar: UINavigationBar {
init(frame: CGRect) {
super.init(frame: frame)
initialise()
}
init(coder aDecoder: NSCoder!){
super.init(coder: aDecoder)
initialise()
}
func initialise(){
let logo = UIImage(named: "logo");
let imageView = UIImageView(image:logo)
imageView.frame.size.width = 145;
imageView.frame.size.height = 33;
imageView.frame.origin = CGPoint(x: 2, y: 8)
addSubview(imageView)
}
}
答案 1 :(得分:2)
你只是错过了?当您声明图像时,也可能想要添加内容模式:
let logo = UIImage(named: "logo") as UIImage?
let imageView = UIImageView(image:logo)
imageView.frame.size.width = 200;
imageView.frame.size.height = 45;
imageView.contentMode = UIViewContentMode.ScaleAspectFit
self.navigationItem.titleView = imageView
答案 2 :(得分:0)
尝试使用addSubview方法将UIImageView添加到导航栏。这是Objective-C中的代码:
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon-vysk-white"]];
[self.navigationController.navigationBar addSubview:imgView];
imgView.contentMode = UIViewContentModeScaleAspectFit;
imgView.frame = CGRectMake(140, 0, 40, 40);