如何更改UISearchBar中的UITextField位置?
问题描述:
有没有办法重新定位的UITextField里面的UISearchBar? 我想在UISearchBar中将UITextField移动一点点。如何更改UISearchBar中的UITextField位置?
答
的UITextField做法是不工作了,可能是由于物体的UISearchBar的改型。 UISearchBar在其显示在屏幕上时调整其UITextField的大小,这会使UITextField上的所有操作无效。
不过,我发现的UISearchBar响应setContentInset:
方法(在iOS 5.0.1测试)。它调整封闭视图的插入距离。
该结果在涉及NSInvocation的一个复杂的方法:在使用的CGRect
if([aSearchBar respondsToSelector:@selector(setContentInset:)])
{
SEL aSelector = NSSelectorFromString(@"setContentInset:");
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[aSearchBar methodSignatureForSelector:aSelector]];
[inv setSelector:aSelector];
[inv setTarget:aSearchBar];
UIEdgeInsets anInsets = UIEdgeInsetsMake(5, 0, 5, 35);
[inv setArgument:&anInsets atIndex:2]; //arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation
[inv invoke];
}
上面的代码大小调整的UISearchBar(有效的UITextField)的contentInset
在anInsets
参数指示。父级if语句(respondsToSelector:
)可以避免在iOS新版本中发生此行为更改。
更新了Swift3和iOS10:
if searchBar.responds(to: Selector("setContentInset:")) {
let aSelector = Selector("setContentInset:")
let anInset = UIEdgeInsetsMake(5, 0, 5, 35)
searchBar.perform(aSelector, with: anInset)
}
我认为你必须实现自己的搜索栏。 – Legolas