为什么Text在UITextField中从底部切割?

时间:2011-09-07 12:03:34

标签: iphone fonts uitextfield

我在整个应用程序的文本字段和标签中使用自定义字体。我的字体名称是“digital-7.ttf”。现在的问题是我的标签中的文本是好的,但在UITextFields中它是从底部剪切文本。当textfield正在编辑时,文本很好,但是当编辑完成后,它再次剪切文本。像这样enter image description here

这样我就设置了它的字体样式  [txtFld setFont:[UIFont fontWithName:@"digital-7" size:25.0]];

和字体已添加到info.plist

请帮帮我

5 个答案:

答案 0 :(得分:5)

我在UITextField中遇到了与自定义字体类似的问题,但在我的情况下,它在顶部切断了我的变音符号。

我用FontForge打开字体并调整了元素中的 HHead Ascent Offset - > OS / 2 - >度量标准与 Win Ascent Offset

的值相同

在你的情况下,它可能是 HHHead Descent Offset 。尝试修改此值

答案 1 :(得分:2)

我使用相同的Digital-7字体(尽管是斜体)遇到了同样的问题。基于JeanLuc的答案,唯一明智的方法是在字体编辑器中修改指标。我也使用过FontForge,但我采取的步骤有所不同。我打开字体,去了Element>字体信息...> OS / 2>度量标准并将HHead Descent值(表示Mac上的行间距)更改为Win Descent值的负值(Windows上的行间距)。见下文:

Image

还要确保Win Ascent和HHead Ascent值相同。您可能还想更改已修改字体的名称。完成更改后,单击“确定”,“文件”,“生成字体...”,选择“ttf格式”并保存。

答案 2 :(得分:2)

编辑字体文件似乎有点沉重。

你有没有尝试过Malcolm的建议?我使用的是自定义字体,以及接受UIEdgeInset

的自定义子类

InsetTextField.h

#import <UIKit/UIKit.h>

@interface InsetTextField : UITextField

@property (assign, nonatomic) UIEdgeInsets insets;

@end

InsetTextField.m

#import "InsetTextField.h"

@implementation InsetTextField

- (CGRect) textRectForBounds:(CGRect)bounds
{
    return UIEdgeInsetsInsetRect([super textRectForBounds:bounds], self.insets);
}

- (CGRect)editingRectForBounds:(CGRect)bounds
{
    return UIEdgeInsetsInsetRect([super editingRectForBounds:bounds], self.insets);
}

@end

如果Digital-7仍然行为不端,我认为除了更改字体文件之外,你没有其他办法。 : - /

答案 3 :(得分:-2)

您应该增加文本框架高度,以便解决您的问题,或减少文本的字体大小

答案 4 :(得分:-2)

这个问题出现在Xcode 3.2.5中。在早期版本中,相同的代码效果很好:)