14

外観プロキシを介して UISearchBar のフォントをカスタマイズしようとしています。それは機能しますが、どういうわけか、プレースホルダーのテキストが垂直方向の中央に配置されていません。垂直方向の配置プロパティを設定しようとしました。プレースホルダーのテキストは中央に配置されますが、入力されたテキストは中央線より少し下になります...これを修正する方法はありますか?

編集:カスタムフォントを追加するために使用したコード:

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

プレースホルダー テキスト

通常のテキスト

4

3 に答える 3

1

これが私に起こるときはいつでも、それは通常UIAppearanceUISearchBar. 以前に作成した可能性のあるハックを調べて、一度に 1 つずつコメントアウトしてみてください。

私の特定のケースでは、実際にNSForegroundColorはテキスト属性の変更であったため、このずれはフォントの変更とは無関係である可能性があります。

于 2015-08-10T03:53:52.227 に答える
0

searchBar 内の textField の配置を設定する必要があります。UISearch バーのサブビューから textField を取得し、その配置を中央に設定するだけです。以下のサンプル コードを試してください。

- (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 のアウトレットです。

于 2013-04-11T04:14:53.743 に答える
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];

}

このコードを一度試してください。

于 2013-04-11T06:57:03.103 に答える