1。。如何像苹果公司为iMessage应用程序一样提高导航栏的高度:
2。。如何在单击titleView时使导航栏展开:
我尝试创建一个更大的titleView,但是它只是被裁剪到默认导航栏高度的范围。他们如何实现这一目标?另外,我的视图控制器以编程方式嵌入到导航控制器中。
答案 0 :(得分:0)
不确定是否只是将Navigation嵌入到应用程序中...或以编程方式进行设置。
您需要将navBar添加为一种“ IBOulet”,然后根据功能/操作/等来修改其高度。
说“单击名称按钮”;那么类似于“ mainNavBar.heightAnchor.constant = 400”(其中400是新高度)。
或者,如果您手动设置了此设置,并且对导航栏的高度设置了自动布局限制,则可以将其设置为IBOutlet;并轻松访问。
如果您发布了一些代码,或者至少如何进行设置,这将有所帮助。
答案 1 :(得分:0)
使用导航视图代替导航栏,或在didloqd函数上使用自定义视图隐藏导航栏并显示您的自定义视图
答案 2 :(得分:0)
将此类用于导航栏高度:
import Foundation
import UIKit
class NavigationBar: UINavigationBar {
//set NavigationBar's height
//For iphonex, I recommended to set the minimum height to 88 or higher.
var customHeight : CGFloat = 100
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
translatesAutoresizingMaskIntoConstraints = false
}
override func sizeThatFits(_ size: CGSize) -> CGSize {
return CGSize(width: UIScreen.main.bounds.width, height: customHeight)
}
override func layoutSubviews() {
super.layoutSubviews()
self.tintColor = .black
frame = CGRect(x: frame.origin.x, y: 0, width: frame.size.width, height: customHeight)
// title position (statusbar height / 2)
setTitleVerticalPositionAdjustment(-10, for: UIBarMetrics.default)
for subview in self.subviews {
var stringFromClass = NSStringFromClass(subview.classForCoder)
if stringFromClass.contains("BarBackground") {
subview.frame = CGRect(x: 0, y: 0, width: self.frame.width, height: customHeight)
subview.backgroundColor = .yellow
}
stringFromClass = NSStringFromClass(subview.classForCoder)
if stringFromClass.contains("BarContent") {
subview.frame = CGRect(x: subview.frame.origin.x, y: 20, width: subview.frame.width, height: customHeight - 20)
}
}
}
}