我想知道如何將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]' –