iOS 7中的UISearchBar中的UITextField

我正在使用其中的TextField来完成与UISearchBar相同的外观,如我的iOS 6应用程序.我试图用几种方式编码,还没有成功.问题是,自从iOS 7以来,我无法以任何方式更改TextField的框架.结果是,我的TextField占用了NavigationBar中的所有空间,并覆盖了右边的UIBarButtonItem(菜单按钮).见下图:

Screenshots http://oi44.tinypic.com/2ufewx0.jpg

iOS 6代码:这是我如何在iOS 6中编码,在那里我可以将TextFields框架设置为任何我喜欢的!

UITextField *sbTextField = (UITextField *)[searchBar.subviews lastObject];
[sbTextField removeFromSuperview];

CGRect rect = searchBar.frame;
rect.size.height = 32;
rect.size.width = 210;
sbTextField.frame = rect;

[sbTextField setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin];


UIBarButtonItem *searchBarNavigationItem = [[UIBarButtonItem alloc]  initWithCustomView:sbTextField];

[[self navigationItem] setLeftBarButtonItem:searchBarNavigationItem];

iOS 7中的代码上面的结果:![iOS 7 look]

iOS 7代码:iOS 7中的区别是,您需要使用subViews才能将UITextField添加到UISearchBar / UINavigationBar.通过这样做,我还没有改变它的框架.它目前正在与右边的menuButton重叠,该代码可以在下面的图片中看到…

UITextField* sbTextField;
CGRect rect = subView.frame;
rect.size.height = 32;
rect.size.width = 115;

for (UIView *subView in self.searchBar.subviews){
    for (UIView *ndLeveSubView in subView.subviews){

        if ([ndLeveSubView isKindOfClass:[UITextField class]])
        {

            sbTextField = (UITextField *)ndLeveSubView;
            sbTextField.backgroundColor =[UIColor whiteColor];
            UIBarButtonItem *searchBarNavigationItem = [[UIBarButtonItem alloc] initWithCustomView:sbTextField];
            sbTextField.frame = rect;
            self.navigationItem.leftBarButtonItem = searchBarNavigationItem;
            self.navigationItem.rightBarButtonItem =  menuButton;
            [sbTextField removeFromSuperview];

             break;
        }

    }

 }
 [self.searchBar reloadInputViews];

SO …是否可以以任何方式更改子视图的框架(TextField)?

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...