[英]Get or Set leading spacing of Navigation Title on Large Title Mode - SwiftUI
[英]setting leading margin of content to the leading of navigation bar large title in swift
我有一個關於使用自動布局對齊內容的問題。
我有一個大導航欄和導航欄正下方的一個 UIView。 我想將 UIView 的前導錨設置為與導航欄相同的前導錨。 目前,我的代碼在下面,視圖的前導錨點與導航欄的前導不同。 (是的,因為我正在使用 layoutMarginsGuide 所以這就是原因。)
NSLayoutConstraint.activate([
myView.topAnchor.constraint(equalTo: self.safeAreaLayoutGuide.topAnchor),
myView.bottomAnchor.constraint(equalTo: self.safeAreaLayoutGuide.bottomAnchor),
myView.leadingAnchor.constraint(equalTo: self.layoutMarginsGuide.leadingAnchor),
myView.trailingAnchor.constraint(equalTo: self.layoutMarginsGuide.trailingAnchor),
myView.centerXAnchor.constraint(equalTo: self.centerXAnchor)
])
我使用 Figma 並發現大型導航欄(對於 iPhoneSE)的填充為 16,因此我可以將 myView 的前導錨的約束設置為
myView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 16)
但我想知道是否有一種方法可以在不使用固定常數值 16 的情況下進行對齊? 我查看了 Safe Area Layout Guide 和 Layout Margins Guide ,但我無法根據需要更改視圖。
我遇到了兩種可能賦予此價值的方法:
1.遍歷導航欄層次結構
var leftMargin: CGFloat = 0.0
for view in navigationController!.navigationBar.subviews
{
if let classToFind = NSClassFromString("_UINavigationBarLargeTitleView"),
view.isKind(of: classToFind)
{
leftMargin = view.layoutMargins.left
}
}
// Set your left margin of view to align to leftMargin variable
這里的兩個未知數是我不確定這是否正在查詢私有 class 以及是否可以。 第二件事是,這個 class 名稱可能會在未來的 iOS 版本中更改。
2.systemMinimumLayoutMargins
我遇到的另一件事是獲取systemminimumlayoutmargins ,您可以這樣做:
var leftMargin = navigationController!.systemMinimumLayoutMargins.leading
// Set your left margin of view to align to leftMargin variable
這給出了一個有效的值,但是我不確定這是否是描述標題左側值的預期用途
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.