UISearchBar搜索图标在iOS7中未对齐

use*_*370 10 iphone objective-c uisearchbar ios ios7

在iOS7中,搜索图标和占位符文本总是出现在中间.我尝试将搜索栏中文本字段的文本对齐方式更改为左边但是它不起作用.有没有办法让搜索栏搜索图标在iOS7中显示为左对齐

我尝试了以下几行,但它不起作用:

UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
txfSearchField.textAlignment = NSTextAlignmentLeft;

[_searchArticle setImage:image forSearchBarIcon:UISearchBarIconSearch    state:UIControlStateNormal];
UIimageView *im = [UIImageView alloc]init];
im.image = image;
txfSearchField.leftView =im;
Run Code Online (Sandbox Code Playgroud)

kmi*_*thi 20

没有办法改变搜索栏的占位符文本的对齐方式,我尝试了很多"SO"答案,但没有人工作.最后,我结束了这个解决方法

在占位符文本右侧给出一些空白区域

    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
        // Load resources for iOS 6.1 or earlier
        self.searchBar.placeholder = @"hello";
   } else {
       // Load resources for iOS 7 or later
       self.searchBar.placeholder = @"hello             ";
  }
Run Code Online (Sandbox Code Playgroud)

请享用 !!


Mur*_*m K 0

1 子类化 uitextField

2 在 initWithFrame 中

  [self setBackgroundColor:[UIColor clearColor]];
        [self setTextAlignment:NSTextAlignmentLeft];
        [self setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
        [self setAutocorrectionType:UITextAutocorrectionTypeNo];
        [self setAutocapitalizationType:UITextAutocapitalizationTypeNone];
        [self setPlaceholder:@"Search"];
        [self setLeftView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search-icon"]]];
        [self setLeftViewMode:UITextFieldViewModeAlways];
Run Code Online (Sandbox Code Playgroud)

3. 在主类中包含 UItextfieldDelegate 并实现以下委托方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSString* searchString = [textField.text stringByReplacingCharactersInRange:range withString:string];

    searchYourFriendsArray = [[NSMutableArray alloc] init];

    if(searchString.length > 0 )
    {
        NSMutableArray *searchArray = [NSMutableArray arrayWithArray:yourFriendsArray];
        NSPredicate *predicate  = [NSPredicate predicateWithFormat:@"FirstName beginswith[C] %@ OR LastName beginswith[C] %@",searchString,searchString];
        searchYourFriendsArray  = [NSMutableArray arrayWithArray:[searchArray filteredArrayUsingPredicate:predicate]];

       }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)