Chciałbym wiedzieć, w jaki sposób należy zmienić UISearchBar z domyślnej krzywej round do prostokąta.jak zmienić UISearchar od rundy do prostokąta?
Odpowiedz
for (UIView *searchBarSubview in [mySearchBar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
}
@catch (NSException * e) {
// ignore exception
}
}
}
Swift 4:
mySearchBar.subviews().forEach { searchBarSubview in
if searchBarSubview is UITextInputTraits {
do {
(searchBarSubview as? UITextField)?.borderStyle = .roundedRect
} catch {
// ignore exception
}
}
}
Prosty dodatek tło obrazu, lewy i prawy widok widok dla TextField.
Przykład poniżej
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 10., nameField.bounds.size.height)];
nameField.leftView = leftView;
nameField.leftViewMode = UITextFieldViewModeAlways;
leftView release];
textfield skąd? – Desmond
w naszym wcześniejszym projekcie również starał się realizować w taki sposób, ale dostosowanie nie jest możliwe.
nie można tego zrobić? – Desmond
UISearchBar ma okrągły łuk, i to naprawić, jeśli chcesz, aby to prostokąt trzeba użyć niestandardowy pasek wyszukiwania z prostokątnego obrazu jak jak z paska wyszukiwania i 1 uibutton i UITextField i swojej własnej logiki wyszukiwanego
Chciałbym użyć UIView
, z tymi funkcjami:
- ustawić ramkę.
- CoreGraphics przywozowe w swojej klasie
- ustawić białe tło widoku
- zestaw view.layer.cornerRadius=10;
- zestaw view.layer.borderWidth=8;
- zestaw view.layer.borderColor=[UIColor blackColor].CGColor;
- wstawić etykietę (z jasnym tle) wewnątrz utworzonego widoku
Dla przycisku po lewej używam interfejsu użytkownika, dla prawego zestawu przycisków textField.clearButtonMode= UITextFieldViewModeAlways;
Mam nadzieję, że to pomoże.
wygląda na mocnego, myślę, że zostawiam go takim, jaki jest. jeśli to zadziała, daj mi znać. dzięki :) – Desmond
W obrazie docelowym nie widzę domyślny cień, więc będę wspomnieć, że ustawienie tła własności do zera będzie go usunąć. Musiałem to zrobić w moim projekcie, a usunięcie obrazu i manipulowanie granicą działa dobrze. Musiałem rzucić kontrolę, aby uzyskać właściwość w tle.
UITextField * x = (UITextField*)searchBarSubview;
x.background = nil;
@Keller dziękuję za wskazówkę dotyczącą znalezienia kontroli.
Możesz spróbować tego.
for (UIView *searchBarSubview in [search_bar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
if([searchBarSubview isKindOfClass:[UITextField class]])
{
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
}
}
}
Znacznie lepiej moim zdaniem:
UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
txfSearchField.borderStyle = UITextBorderStyleNone;
Ja również niedawno osiągnął to w projekcie przez przemierzając subviews obiektu UISearchBar. Jednak pole tekstowe nie było bezpośrednim potomkiem, jak zasugerowała przyjęta odpowiedź, ale podzbiorem innego jego podukładu. Wewnętrzna hierarchia widoków prawdopodobnie zmieniła się w pewnym momencie. (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;
}
}
}
}
}
Metoda ta nie korzysta z żadnych metod nieudokumentowane więc to chyba App Store bezpieczny, mimo że jest podatna na zatrzymanie pracy z przyszłymi zmianami w SDK.
Dlaczego nie używać protokołu UIAppearance
?
[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setBorderStyle:UITextBorderStyleRoundedRect];
Swift 3
let textFieldInsideUISearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideUISearchBar?.borderStyle = .none
textFieldInsideUISearchBar?.backgroundColor = UIColor.white
@ Pierre.Vriens która linia? –
Wszystkie. Innymi słowy: samo opublikowanie "jakiegoś kodu" bez żadnego wyjaśnienia jest powszechnie postrzegane jako nienajlepsza odpowiedź. Więc może chcesz krótko wyjaśnić, w jaki sposób opublikowany kod pomaga odpowiedzieć na pytanie. Powodzenia! –
@ Pierre.Vriens spójrz na zaakceptowany komentarz, nie ma potrzeby wyjaśniania. wystarczy skopiować i wkleić w swoim UIViewController. –
- 1. Znajdowanie obróconego prostokąta od konturu
- 2. numer rundy do 2 miejsc dziesiętnych
- 3. numer rundy do najbliższego 0,2 z PHP
- 4. zmiana końcówek segmentów z rundy na płaskie
- 5. Jak dodać tekst do prostokąta pygame
- 6. zmienić kursor z bloku lub prostokąta na linię?
- 7. CSS3 animacje Webkit CSS: div zmienić rozmiar prostokąta
- 8. SQL: lista punktów do prostokąta
- 9. Rysowanie prostokąta na obrazku - jak ograniczyć obszar prostokąta?
- 10. Jak zmienić odległość od 1 metra do piksela?
- 11. jak obliczyć dist() z mouseX, mouseY do prostokąta w przetwarzaniu
- 12. Jak zmienić ItemsPanelTemplate WrapGrid Od kodu XAML?
- 13. Lepsza implementacja Ruby rundy dziesiętnej do najbliższej 0.5
- 14. Zmienianie rozmiaru spinacza i przycinanie do prostokąta
- 15. Znajdowanie prostokąta wyrównanego do osi wewnątrz wielokąta
- 16. Rysowanie prostokąta prostokątnego OpenGL
- 17. Obliczanie wierzchołków obróconego prostokąta
- 18. Obracanie prostokąta wokół punktu
- 19. Jak dodać zaokrąglony róg do niestandardowego prostokąta UIBezierPath?
- 20. Współrzędne prostokąta po transformacji
- 21. Rysowanie obróconego prostokąta
- 22. Rysowanie prostokąta w UIView
- 23. Swift 3: Rysowanie prostokąta
- 24. Jak przyciąć obraz za pomocą obróconego prostokąta?
- 25. Wypełnij zewnętrzną część prostokąta.
- 26. Jak sprawdzić przecięcie linii i prostokąta?
- 27. Jak utworzyć kształt zaokrąglonego prostokąta Css?
- 28. Jak znaleźć koło wewnątrz prostokąta w AForge
- 29. Znajdowanie prostokąta ograniczonego wewnątrz wklęsłego/wypukłego wielokąta
- 30. VI (VIM): usunąć/zmienić od prawej do lewej?
tak to działa !!!!! dzięki @keller – Desmond
Następnie możesz kontrolować promień narożnika za pomocą searchBarTextField.layer.cornerRadius = 5.0; – esbenr
if ([searchBarSubview respondsToSelector: @sel (setBorderStyle)]) ' [(UITextField *) searchBarSubview setBorderStyle: UITextBorderStyleRoundedRect];' –