我想在UINavigationBar的大标题视图上添加一个自定义的子视图,就像iOS 11中的应用商店一样。(右侧的“用户图标”)
我们可以通过UINavigationItem.titleView访问传统的导航栏区域,但似乎没有访问大标题视图区域的接口。
https://developer.apple.com/documentation/uikit/uinavigationitem/ https://developer.apple.com/documentation/uikit/uinavigationbar/
我使用View Hierarchy Debugger确认了它的名字是"_UINavigationBarLargeTitleView“。我可以在其上添加自定义视图吗?
发布于 2018-08-01 12:14:20
解决方案依赖于大标题标签的子视图顺序,而不是其私有类名,以使其符合AppStore准则。
class CustomLargeTitleNavigationBar: UINavigationBar {
override func didMoveToSuperview() {
super.didMoveToSuperview()
if #available(iOS 11.0, *) {
for subview in subviews {
if let largeTitleLabel = subview.subviews.first(where: { $0 is UILabel }) as? UILabel {
let largeTitleView = subview
print("largeTitleView:", largeTitleView)
print("largeTitleLabel:", largeTitleLabel)
// you may customize the largeTitleView and largeTitleLabel here
break
}
}
}
}
}
发布于 2017-10-24 03:24:25
根据这篇文章,我想应该或多或少是这样的。https://qiita.com/KikurageChan/items/4152c2d8ac89c601a054
import UIKit
@IBDesignable class CustomNavigationBar: UINavigationBar {
override func layoutSubviews() {
super.layoutSubviews()
if #available(iOS 11.0, *) {
for subview in self.subviews {
let stringFromClass = NSStringFromClass(subview.classForCoder)
if stringFromClass.contains("UINavigationBarLargeTitleView") {
//subview.frame.size.height = 30
// Custom view
subview.addSub.....
}
}
}
}
}
CustomNavigationBar
https://stackoverflow.com/questions/46620068
复制相似问题