3
A
回答
19
由于this answer shows,最简单的解决方案是将文本图像添加到您的形象,增加了导航栏,如下所示:
var image = UIImage(named: "logo.png")
self.navigationItem.titleView = UIImageView(image: image)
但是,如果你要加文本和图像(例如就本地化而言),您可以将导航栏的标题视图设置为包含图像和文本,方法是将它们添加到UIView
,并将navigationItem
的标题视图设置为UIView
,例如(假设导航栏是一个导航控制器的一部分):
// Only execute the code if there's a navigation controller
if self.navigationController == nil {
return
}
// Create a navView to add to the navigation bar
let navView = UIView()
// Create the label
let label = UILabel()
label.text = "Text"
label.sizeToFit()
label.center = navView.center
label.textAlignment = NSTextAlignment.Center
// Create the image view
let image = UIImageView()
image.image = UIImage(named: "Image.png")
// To maintain the image's aspect ratio:
let imageAspect = image.image!.size.width/image.image!.size.height
// Setting the image frame so that it's immediately before the text:
image.frame = CGRect(x: label.frame.origin.x-label.frame.size.height*imageAspect, y: label.frame.origin.y, width: label.frame.size.height*imageAspect, height: label.frame.size.height)
image.contentMode = UIViewContentMode.ScaleAspectFit
// Add both the label and image view to the navView
navView.addSubview(label)
navView.addSubview(image)
// Set the navigation bar's navigation item's titleView to the navView
self.navigationItem.titleView = navView
// Set the navView's frame to fit within the titleView
navView.sizeToFit()
1
这里是我的雨燕4 2美分,因为公认的答案并没有为我工作(主要是关闭屏幕):
// .. in ViewController
var navBar = CustomTitleView()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// =================== navBar =====================
navBar.loadWith(title: "Budget Overview", leftImage: Images.pie_chart)
self.navigationItem.titleView = navBar
}
class CustomTitleView: UIView
{
var title_label = CustomLabel()
var left_imageView = UIImageView()
override init(frame: CGRect){
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder){
super.init(coder: aDecoder)
setup()
}
func setup(){
self.addSubview(title_label)
self.addSubview(left_imageView)
}
func loadWith(title: String, leftImage: UIImage?)
{
//self.backgroundColor = .yellow
// =================== title_label ==================
//title_label.backgroundColor = .blue
title_label.text = title
title_label.font = UIFont.systemFont(ofSize: FontManager.fontSize + 5)
// =================== imageView ===================
left_imageView.image = leftImage
setupFrames()
}
func setupFrames()
{
let height: CGFloat = Navigation.topViewController()?.navigationController?.navigationBar.frame.height ?? 44
let image_size: CGFloat = height * 0.8
left_imageView.frame = CGRect(x: 0,
y: (height - image_size)/2,
width: (left_imageView.image == nil) ? 0 : image_size,
height: image_size)
let titleWidth: CGFloat = title_label.intrinsicContentSize.width + 10
title_label.frame = CGRect(x: left_imageView.frame.maxX + 5,
y: 0,
width: titleWidth,
height: height)
contentWidth = Int(left_imageView.frame.width)
self.frame = CGRect(x: 0, y: 0, width: CGFloat(contentWidth), height: height)
}
var contentWidth: Int = 0 //if its CGFloat, it infinitely calls layoutSubviews(), changing franction of a width
override func layoutSubviews() {
super.layoutSubviews()
self.frame.size.width = CGFloat(contentWidth)
}
}
相关问题
- 1. 在导航栏固定顶部之前添加标题图片
- 2. 如何在导航栏中添加图片以代替文字?
- 3. iOS的11导航栏图标问题
- 4. iOS导航栏图标问题
- 5. 如何在iPhone中一起添加图片和文字导航栏
- 6. 子视图添加到导航栏ios
- 7. 如何在反应导航标签栏内添加图片?
- 8. 将标题和图像添加到导航栏
- 9. 在导航栏中间添加徽标?
- 10. 在导航栏的后退按钮和标题之间添加图标
- 11. 导航栏图片
- 12. 在UICollectionView中添加导航栏在iOS 4中,iOS 11
- 13. iOS:意外覆盖导航栏的表格视图标题栏
- 14. 如何添加一个标志和文字在工具栏或导航栏
- 15. iOS导航栏 - 我想在导航栏中用动态值设置标题
- 16. 添加图片和标题
- 17. 如何在rmarkdown的导航栏标题栏中添加自定义徽标?
- 18. 在Bootstrap导航栏前添加徽标
- 19. 在导航栏上的切换图标旁边添加徽标
- 20. 在引导栏的导航栏右侧添加两个图标图像
- 21. 导航栏中的页面指示器和标题iOS Objective C
- 22. 添加导航栏
- 23. 导航栏标题字体大小
- 24. iOS导航栏图标大小iPhone 6
- 25. 在xcode中为导航栏添加图标
- 26. iOS中的导航栏下的标签
- 27. 在Xcode中添加导航栏控制器标题下的字幕
- 28. 将导航按钮添加到统一标题栏/工具栏
- 29. 如何添加/使用默认的图标导航栏
- 30. 添加导航抽屉通过替换在导航栏中的导航栏
完美答案,谢谢 –