Dio*_*o T 9 objective-c uitextview ios ios8
在使用Helvetica Neue Light 17等字体时,iOS 8.1.X中的UITextField在编辑和非编辑模式之间具有不同的垂直文本对齐:

我这里有一个示例项目.
是否有一种解决方法,我不需要创建自定义文本字段?主要问题是当使用动态类型时,字体可以在运行时更改.
无论如何,我开了一个雷达rdar:// 19374610.
Pab*_*rez -1
这个错误与字体相关,因此我将采用一个解决方案来设置属性字符串的样式来弥补这一点。
使用 Helvetica Neue Light 和尺寸 17 修复第一个文本字段的示例:
假设视图控制器是firstTextField的委托
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSDictionary *style = @{
NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light"
size:17],
NSParagraphStyleAttributeName : [NSParagraphStyle defaultParagraphStyle],
NSBaselineOffsetAttributeName: @(0.4)
};
_firstTextField.attributedText = [[NSAttributedString alloc] initWithString:_firstTextField.text
attributes:style];
}
-(void)textFieldDidBeginEditing:(UITextField *)textField {
NSDictionary *style = @{
NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light"
size:17],
NSParagraphStyleAttributeName : [NSParagraphStyle defaultParagraphStyle],
NSBaselineOffsetAttributeName: @(0.0)
};
[_firstTextField setTypingAttributes: style];
}
Run Code Online (Sandbox Code Playgroud)
关键部分是从呈现文本字段到编辑文本字段时设置 NSBaselineAlignment 的时间。我还检查了当字体为双倍大小(文本字段足够大)并且 NSBaselineOffset 仍然相同以避免跳跃效果时会发生什么。
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |