アプリケーションで UISearchBar の外観を変更する次のコードがあり、下の画像でも確認できます。
for(int i = 0; i < [[searchBar subviews] count]; i++){
UIView *subView = [[searchBar subviews] objectAtIndex:i];
if([[NSString stringWithFormat:@"%@", [subView class]] isEqualToString:@"UINavigationButton"]){
UIButton *cancelButton = (UIButton *)subView;
CGRect buttonFrame = cancelButton.frame;
buttonFrame.size.height = 52;
[cancelButton setFrame:buttonFrame];
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[cancelButton setBackgroundImage:[UIImage imageNamed:@"cancel.png"] forState:UIControlStateNormal];
[cancelButton setBackgroundImage:[UIImage imageNamed:@"cancel_pressed.png"] forState:UIControlStateHighlighted];
}
}
ご覧のとおり、UISearchBar に含まれるボタンの高さを変更しようとしていますが、うまくいきません。テキストを変更でき、フレームの高さだけでなく背景画像が変更されるため、ボタンへの参照を取得します。ボタンの高さを検索ボックスと同じ 52px にしたいだけです。
編集:
本当にハックな解決策を見つけましたが、キャンセル ボタンのサブビューとして UIButton を追加するのはあまりエレガントではありません。それは仕事をしますが、私が言うように、それはあまり良くありません。