gpt4 book ai didi

iphone - 调整navigationItem.titleView的框架?

转载 作者:行者123 更新时间:2023-12-03 18:16:33 26 4
gpt4 key购买 nike

我注意到 titleView 的位置取决于右栏按钮的标题。如何将 titleView 的框架设置为居中?

我尝试过设置titleView.frame,但没有成功。

代码如下:

UIButton *titleLabel = [UIButton buttonWithType:UIButtonTypeCustom];
[titleLabel setTitle:@"Right Eye" forState:UIControlStateNormal];
[titleLabel setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[titleLabel setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
titleLabel.frame = CGRectMake(100, 0, 180, 44);
titleLabel.titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.titleLabel.font = [UIFont boldSystemFontOfSize:20.0];
titleLabel.titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.3];
// titleLabel.titleLabel.textAlignment = UITextAlignmentCenter; (this doesn't work either)
[titleLabel addTarget:self action:@selector(titleTap:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.titleView = titleLabel;
self.navigationItem.titleView.frame = CGRectMake(100, 0, 180, 44); //(this doesn't work either)

alt text

最佳答案

在 View Controller 的 viewWillAppear: 和 viewDidAppear: 之间的某个时间,导航栏会重新定位您的 titleView 并在必要时调整其大小以适应。它最终可能会不居中,因为导航栏不喜欢调整 titleView 的大小以适应按钮之间的大小。如果标题 View 足够小,它似乎会尝试将其居中,但如果不是的话,会将您的 titleView 移离中心,然后我认为只有作为最后的手段才会调整大小。效果是 titleView 占据了两个按钮之间的所有空间,如果它的 textAlignment 居中,那么它将在该空间中居中,尽管不是相对于整个屏幕居中。您可以在屏幕截图中看到这一点。

一个答案是使您的 titleView 变窄,以便导航栏可以将其居中,因此在设置 titleView.frame 时尝试大约 160 而不是 180。糟糕的是,当像您一样以编程方式创建 View 时,必须将对该宽度的估计放入代码中。最好的方法是在保持居中的同时最大化该空间。

可以从 titleView 作为屏幕宽度开始,然后在导航栏更改 titleView.frame 后,在 View Controller 的 viewDidAppear: 中再次更新它。使用调整后的titleView.frame.origin.x和size.width以及屏幕宽度,您可以计算左右边距中的最大值,然后将origin.x设置为该值,size.width为屏幕宽度减去乘以 2。但是,直到推送的 View 动画化并且之后的转变可见之后才会生效。您可以在 viewWillAppear: 中隐藏 titleView,然后在将其居中后在 viewDidAppear: 中取消隐藏,这样,它就不会滑入一个偏离中心的 titleView(然后移动),而是滑入后不会出现任何标题。

更好的可能性是让你的 titleView 成为你自己的 UIView (或 UILabel 或任何一个)的子类,并覆盖 setFrame 以调整自身大小以保持在其 super View 的中心。如果我最终自己做这件事,我会将其发布在这里。或者也许其他人知道另一个地方可以在更新 titleView 的框架之后但在没有 View 子类的 View 滑入之前更改 titleView 的框架。

关于iphone - 调整navigationItem.titleView的框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com