我想知道如何将UISearchBar从默认的圆形曲线更改为矩形。如何将UISearchBar从圆形改为矩形?
回答
for (UIView *searchBarSubview in [mySearchBar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
}
@catch (NSException * e) {
// ignore exception
}
}
}
斯威夫特4:
mySearchBar.subviews().forEach { searchBarSubview in
if searchBarSubview is UITextInputTraits {
do {
(searchBarSubview as? UITextField)?.borderStyle = .roundedRect
} catch {
// ignore exception
}
}
}
简单的添加背景图像,左视图,右视图的文本字段。下面
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 10., nameField.bounds.size.height)];
nameField.leftView = leftView;
nameField.leftViewMode = UITextFieldViewModeAlways;
leftView release];
从那里文本字段? – Desmond
的UISearchBar具有非圆曲线,如果你喜欢,使其矩形,你必须使用与矩形图像自定义搜索栏像搜索栏和1的UIButton,同时也是UITextField,和你自己的搜索逻辑,则修复
我会使用UIView
,这些功能:
- 设置您的框架。
- 在你的类进口CoreGraphics在
- 设置视图
的白色背景 - 设置view.layer.cornerRadius=10;
- 设置view.layer.borderWidth=8;
- 设置view.layer.borderColor=[UIColor blackColor].CGColor;
- 插入标签(带有明显的背景)创建的视图
内 对于左侧的按钮,我会使用uiimage,右键设置textField.clearButtonMode= UITextFieldViewModeAlways;
希望这有助于。
看起来很难,我想我会保持原样。如果它碰巧为你工作,让我知道。 谢谢:) – Desmond
在目标图像我没有看到默认的影子,所以我会提的是,背景属性设置为无将其删除。我需要在我的项目中做到这一点,并删除图像和操纵边界效果很好。我不得不施放控制权来获得背景属性。
UITextField * x = (UITextField*)searchBarSubview;
x.background = nil;
@凯勒感谢您的提示找到控制。
你可以试试这个。
for (UIView *searchBarSubview in [search_bar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
if([searchBarSubview isKindOfClass:[UITextField class]])
{
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
}
}
}
在我看来好多了:
UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
txfSearchField.borderStyle = UITextBorderStyleNone;
我也最近在一个项目通过遍历的UISearchBar对象的子视图实现这一点。但是,文本字段并不像接受的答案所建议的那样是一个直接的孩子,而是另一个子视图的子视图。内部视图层次结构可能在某些时候发生了变化。 (SDK 8。4)
+ (void)setSearchBar:(UISearchBar *)searchBar cornerRadius:(CGFloat)radius {
//set searchbar corner radius
for(UIView *possibleSearchBarTextFieldSuperview in [searchBar subviews]) {
if([[possibleSearchBarTextFieldSuperview subviews] count] > 0) {
for(UIView *possibleInnerSearchBarTextField in [possibleSearchBarTextFieldSuperview subviews]) {
if([possibleInnerSearchBarTextField conformsToProtocol:@protocol(UITextInputTraits)]) {
possibleInnerSearchBarTextField.layer.cornerRadius = radius;
possibleInnerSearchBarTextField.layer.masksToBounds = YES;
return;
}
}
}
}
}
因此它可能是App Store的安全,虽然它是容易停止与该SDK的未来变化的工作这种方法不使用任何无证方法。
为什么不使用UIAppearance
协议?
[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setBorderStyle:UITextBorderStyleRoundedRect];
夫特3
let textFieldInsideUISearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideUISearchBar?.borderStyle = .none
textFieldInsideUISearchBar?.backgroundColor = UIColor.white
@ Pierre.Vriens哪一行? –
所有这些。换句话说:只是发布“一些代码”而没有任何解释,通常被认为不是一个高质量的答案。所以,也许你想简要地解释你发布的代码如何帮助回答这个问题。祝你好运! –
@ Pierre.Vriens看看接受的评论,不需要解释。 只需复制并粘贴到您的UIViewController。 –
- 1. 将圆角矩形变换为圆形
- 2. 如何将图像从不规则矩形更改为矩形?
- 3. 如何更改别针按钮(Pinterest)背景矩形为圆形?
- 4. 如何将矩形选择转换为圆形(在网格中)
- 5. 如何将矩形图像设置为圆形图像
- 6. 如何用OpenCV绘制圆角矩形(带圆角的矩形)?
- 7. C3.js将圆形更改为方形
- 8. 如何在D3强制布局中将圆形更改为矩形节点
- 9. 如何将按钮的形状从圆角矩形更改为使用动画圆圈
- 10. 如何将面板中的图形(如矩形,圆形)保存为图像?
- 11. 将矩形UIImageView变成一个圆形
- 12. 如何将WPFToolkit中的DataPointStyle从圆形改为正方形,三角形等等?
- 13. android-圆形矩形边界为布局
- 14. 渐变色圆形矩形
- 15. UIBezzierPath为圆角矩形
- 16. 如何更改圆形的矩形UIbutton背景色
- 17. 在矩形内创建椭圆/圆形
- 18. 矩形的UISearchBar在iOS 7
- 19. 如何动画UISearchbar框架更改保持圆形的帽子?
- 20. 如何将矩形png弯曲到iOS上的圆形上?
- 21. 如何将4个按钮添加到矩形/圆形
- 22. Cytoscape.js如何将一个节点塑造成圆形矩形?
- 23. 如何在圆角矩形内或圆形内绘制图像?
- 24. 如何从圆形区域计算矩形topx,topy,bottomx,bottomy android
- 25. Delphi TRichEdit将背景形状设置为圆角矩形
- 26. 如何创建矩形形状的圆形图像? CSS
- 27. 如何创建圆形UIview而不是矩形形状
- 28. 如何使形状矩形或圆形不可调整大小?
- 29. 为什么在圆形晶圆上制造矩形芯片?
- 30. 将一个矩形矩阵绘制成圆形
是的这个作品!!!!!谢谢@keller – Desmond
然后你可以通过searchBarTextField.layer.cornerRadius = 5.0来控制拐角半径; – esbenr
如果([searchBarSubview respondsToSelector:@sel(setBorderStyle)])' [(的UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect]' –