菜鸟教程小白 发表于 2022-12-13 02:37:52

ios - 自定义导航标题偏移量 ios 11


                                            <p><p>我有一个自定义导航项标题,它只是两个标签,一个在另一个之上,从 .xib 文件加载。</p>

<p> <a href="/image/DOBFt.png" rel="noreferrer noopener nofollow"><img src="/image/DOBFt.png" alt="enter image description here"/></a> </p>

<p>它是通过调用这个来加载的:</p>

<pre><code>class Utilities {
/// Title and subtitle format custom title in Navigation bar.Top and bottom text are centered on one another.
///
/// - Parameters:
///   - navigationItem: The receiving controller&#39;s navigation item.
///   - titleText: Top text to be displayed a little larger and more bold.
///   - subtitleText: Bottom text to be displayed a little smaller and less bold.
class func addCustomNavigationTitle(navigationItem: UINavigationItem, titleText: String, subtitleText: String) {
      let customNavigationTitleView =   LabelSubLabelCustomHeaderView.instanceFromNib() as! LabelSubLabelCustomHeaderView
      customNavigationTitleView.titleLabel.text = titleText
      customNavigationTitleView.dateLabel.text = subtitleText
      navigationItem.titleView = customNavigationTitleView
}
...
}
</code></pre>

<p>定义如下:</p>

<pre><code>class LabelSubLabelCustomHeaderView: UIView {
@IBOutlet var titleLabel: UILabel!
@IBOutlet var dateLabel: UILabel!

class func instanceFromNib() -&gt; UIView {
      return UINib(nibName: &#34;LabelSubLabelCustomHeaderView&#34;, bundle: nil).instantiate(withOwner: nil, options: nil) as! UIView
}
}
</code></pre>

<p>现在,它被精确地下推了 22 个像素,从而隐藏了底部标签。 </p>

<p>我必须在 viewDidAppear 中设置该 View 的框架,以便将其设置为直线。我尝试了 viewWillAppear 和其他一些东西。我真的不得不隐藏它,设置它,然后显示它,这显然是不对的。</p>

<p>在 iOS 11 之前,这没有问题。</p>

<p>现在就是这样,没有我的 hack 修复,我希望我能做对:</p>

<p> <a href="/image/MDaXh.png" rel="noreferrer noopener nofollow"><img src="/image/MDaXh.png" alt="enter image description here"/></a> </p>

<p>这是它应该是什么样子,它在 iOS 10 之前的样子,以及它在我的 hack 修复后的样子:</p>

<p> <a href="/image/scWV9.png" rel="noreferrer noopener nofollow"><img src="/image/scWV9.png" alt="enter image description here"/></a> </p>

<p>另外请注意,当展开转场动画时, View 会返回到错误的帧,即 22 像素太低。 <strong>我该如何解决这个问题?</strong>提前感谢您的帮助。</p>

<p>编辑:更详细的约束信息:</p>

<p> <a href="/image/jRknz.png" rel="noreferrer noopener nofollow"><img src="/image/jRknz.png" alt="View"/></a>
<a href="/image/h4htd.png" rel="noreferrer noopener nofollow"><img src="/image/h4htd.png" alt="DateLabel"/></a> </p>

<p> <a href="/image/hyrJq.png" rel="noreferrer noopener nofollow"><img src="/image/hyrJq.png" alt="TitleLabel"/></a> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您应该在自定义 View 标题 Xib 中添加一个布局约束,强制下层标签与 View 安全区域之间的最小距离。有关 iOS 10/11 的完整工作示例,请参阅 <a href="https://github.com/ekscrypto/Swift-Tutorial-Custom-Title-View" rel="noreferrer noopener nofollow">https://github.com/ekscrypto/Swift-Tutorial-Custom-Title-View</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 自定义导航标题偏移量 ios 11,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46332857/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46332857/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 自定义导航标题偏移量 ios 11