gpt4 book ai didi

iphone - UINavigationItem#titleView 对齐问题

转载 作者:行者123 更新时间:2023-12-03 18:59:35 27 4
gpt4 key购买 nike

我发现有关使用 UINavigationItem#titleView 和自定义字体的信息很少。当我这样做时,导航栏中的字体垂直不对齐。

这篇文章的部分目的是记录黑客行为,也希望有人对这个问题有一个简洁的答案,因为我觉得我错过了一些简单的东西。

首先是使用我自己的 UILabel 派生类进行破解:

@interface NavigationItemLabel : UILabel
- (void)setFrame:(CGRect)frame;
@end

@implementation NavigationItemLabel
- (void)setFrame:(CGRect)frame {
// Called by UINavigationBar layoutSubviews.
frame.origin.y -= self.font.descender;
}
@end

由于某种原因,frame.origin.y == -11,无论我使用什么字体。有谁知道这是为什么吗?

添加我的字体的下降部分(称为 Gabriola 的自定义字体)似乎有帮助。如果没有这个技巧,文本将与导航栏中心的下降部分的底部对齐。

这并不适用于所有字体。

有没有人有更好的解决方案?

谢谢。

最佳答案

如果您要部署到 iOS 5+,您可以查看 UINavigationBar documentation 中的 titleVerticalPositionAdjustmentForBarMetrics 属性。 :

- (CGFloat)titleVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics
Returns the title’s vertical position adjustment for given bar metrics.

此外,您还应该查看 titleTextAttributes(也适用于 iOS5+),您可以使用它来设置自定义字体:

NSDictionary *attributes = @{
UITextAttributeFont: yourFont
};
[navBar setTitleTextAttributes:attributes];

如果您使用 iOS5,我建议将 UILabel 包装在 UIView 内,并将 UIView 设置为 titleView 相反(这允许您通过更改其 frame 来进一步调整包装标签的位置)。

如果您可以访问 WWDC 2012 视频(即如果您有开发者帐户),我强烈建议您观看 Advanced Appearance Customization on iOS 上的演讲(这个东西包含在那里)。

希望它能有所帮助。

关于iphone - UINavigationItem#titleView 对齐问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284405/

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