相关疑难解决方法(0)

UIButton自定义字体垂直对齐

我有一个UIButton使用自定义字体,在我的视图加载时设置:

- (void)viewDidLoad
{
    [super viewDidLoad];    
    self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是字体似乎浮出中心线.如果我注释掉这一行,默认字体会垂直居中显示.但是更改为自定义字体会破坏垂直对齐.

我也在使用自定义字体的Table Cell上遇到了同样的问题.

我是否需要告诉视图某处自定义字体不像其他字体那么高?

编辑:我刚刚意识到我使用的字体是Windows TrueType字体.我可以在Mac上的TextEdit中使用它,只是我的应用程序中的对齐问题

按钮文本不是垂直居中

fonts objective-c vertical-alignment ios

114
推荐指数
4
解决办法
4万
查看次数

自定义安装的字体在UILabel中无法正确显示

我正在尝试使用从Adobe Font Collection Pro Package获得的Helvetica Neue Condensed字体.不幸的是,当我在一个内部使用它时,似乎绘制不正确UILabel.

行高似乎是正确计算的(我认为),但是当显示字体时,它会与边界框的最顶部对齐.我调用[myLabel sizeToFit]并仅调整宽度以产生此屏幕捕获:

不正确的字体渲染的屏幕截图

我对字体的粗体和常规版本都有同样的问题.我能够从OSX中取出一个版本的Helvetica Neue Bold并将其放在我的设备上并显示正常(上图中的绿色背景).

字体文件或我的代码导致它以这种方式绘制可能有什么问题?

fonts uilabel uifont ios4 ios

79
推荐指数
6
解决办法
2万
查看次数

UILabel的行间距,单行文本

是否期望具有自定义lineSpacing属性的多行UILabel 包括该行间距,即使标签的文本适合一行?

这是我的标签:

let label = UILabel()
label.numberOfLines = 4
var paragraph = NSMutableParagraphStyle()
paragraph.lineSpacing = 5
paragraph.lineBreakMode = .ByTruncatingTail
label.attributedText = NSAttributedString(string: "Some short text", attributes: [NSParagraphStyleAttributeName: paragraph])
Run Code Online (Sandbox Code Playgroud)

这是如何布局的.请注意文本下方的额外间距.

在此输入图像描述

为了比较:

在此输入图像描述

奇怪的是缺乏一致性.当标签延伸到第二行时,底线不再包含此额外间距:

在此输入图像描述

当有一行文本时,有没有办法删除这个行间距?或者其他一些方法来强制执行某些一致性,这样我至少可以解释它?

更新

基线计算似乎也被打破了.尝试将视图(此处为红色框)与标签的基线对齐时,会部分覆盖多行标签.

在此输入图像描述 在此输入图像描述

nsattributedstring uilabel ios autolayout

18
推荐指数
1
解决办法
3630
查看次数

为什么UIFont sizeWithFont在计算中包含空格?

我根据UIFont sizeWithFont返回的内容设置UILabels框架,但无论出于何种原因,当我使用自定义字体时,返回的值包括一些填充,如下所示.

当我使用boldSystemFontOfSize文本在中间垂直对齐(这是我想要的),但当我使用fontWithName时,我最终在文本下填充.sizeWithFont在填充中添加的原因是什么?

在此输入图像描述

继承我的代码......

CGRect frameLabel = label.frame;
CGSize sizeLabel = [label.text sizeWithFont:label.font];
frameLabel.size.width = sizeLabel.width;
frameLabel.size.height = sizeLabel.height;
[label setBackgroundColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)

**编辑**

我可以使用此代码计算顶部和底部填充,并调整标签frame.origin.y以垂直居中我的标签所需的位置

float topPadding = [label.font ascender] - [label.font capHeight];
float bottomPadding = [label.font lineHeight] - [label.font ascender];
Run Code Online (Sandbox Code Playgroud)

uilabel uifont ios

6
推荐指数
1
解决办法
1893
查看次数