占位符文本在UISearchBar的UITextField中未对齐

时间:2013-04-11 03:42:09

标签: iphone ios ios5 uitextfield uisearchbar

我正在尝试通过外观代理自定义UISearchBar的字体。它工作,但不知何故,占位符文本不垂直居中。我试图设置垂直对齐属性;占位符文本将居中,但输入的文本将略低于中心线...有没有办法解决这个问题?

编辑:代码我用来添加自定义字体:

[[UITextField appearanceWhenContainedIn: [UISearchBar class], nil]
                                setFont: [UIFont customFontWithSize: 17]];

placeholder text

normal text

3 个答案:

答案 0 :(得分:1)

每当发生这种情况时,通常会由UIAppearance的一些修改导致UISearchBarNSForegroundColor混合不好。看看你以前做过的任何黑客攻击,或者尝试一次一个地评论它们。

在我的特定情况下,它实际上是对文本属性中{{1}}的修改,因此这种错位可能与您的字体更改无关。

答案 1 :(得分:0)

您需要在searchBar中设置textField的对齐方式。 从UISearch栏的子视图中获取textField,只需将其对齐设置为center。尝试下面的示例代码。

- (void)viewDidLoad
{
    for (UITextField *txt in _searchbar.subviews) {
        if ([txt isKindOfClass:[UITextField class]]) {
            [txt setTextAlignment:NSTextAlignmentCenter];
        }
    }
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

这里_searchbar是UISearchBar的出口。

答案 2 :(得分:0)

- (void)viewDidLoad
{

    for (UITextField *txt in search.subviews) {
        if ([txt isKindOfClass:[UITextField class]]) {
            txt.font = [UIFont fontWithName:@"Arial-BoldMT" size:17];
            txt.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
        }
    }

    [super viewDidLoad];

}

尝试使用此代码一次。