Czcionka jest bardzo mała i trudna do odczytania, dlatego chciałbym ją przybliżyć do rozmiaru czcionki używanego na przyciskach pod nią.Czy istnieje sposób na zmianę rozmiaru czcionki tytułu w arkuszu UIActionSheet?
Odpowiedz
Nimrod powiedział, że nie można tego zrobić metodą natywną. Możesz sprawdzić subviews UIActionSheet, znaleźć dobry i zmienić jego właściwości.
ALE
- Ta implementacja może upaść w Futur aktualizacji iOS
- Apple może odrzucić aplikację
- UIActionSheet jest rodowitym elementem iPhone GUI a użytkownicy są zaznajomieni z nim
SO
Naprawdę nie powinien zmienić rozmiar czcionki .. Jeśli ten tytuł UIActionSheet jest ważne należy znaleźć inny sposób, aby pokazać go do użytkownika ...
można zmienić właściwości czcionki po pokaż metodę (jak showFromBarButtonItem) jak poniżej.
CGRect oldFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
UILabel *newTitle = [[[UILabel alloc] initWithFrame:oldFrame] autorelease];
newTitle.font = [UIFont boldSystemFontOfSize:17];
newTitle.textAlignment = UITextAlignmentCenter;
newTitle.backgroundColor = [UIColor clearColor];
newTitle.textColor = [UIColor whiteColor];
newTitle.text = @"My Title";
[sheet addSubview:newTitle];
[sheet release];
Cóż, istnieje sposób, aby to zrobić - Stworzyłem podklasę UIActionSheet na github nazwie LTActionSheet
Jak inni wspomniano, wszystkie rodzaje strasznych rzeczy może się zdarzyć, jeśli używasz go (nie ma w kod wysyłkowy ... jeszcze :-)) Jeśli używasz go w aplikacji, która zostanie zaakceptowana, daj nam znać!
@ odpowiedź user651909 męska działa świetnie dla mnie, chociaż tylko dodać jeszcze kilka szczegółów:
musiałem initWithTitle:@" "
(uwaga niepusty ciąg) podczas tworzenia UIActionSheet
tak, że widok miał trochę miejsca na szczycie dla każdego tekstu na początek. Następnie, po wykonaniu [popupQuery showInView:self.view];
, dodałem jego sugestię, aby oldFrame została zainicjowana. Wreszcie, dodałem:
[newTitle sizeToFit];
newTitle.frame = CGRectMake(oldFrame.origin.x,
oldFrame.origin.y,
oldFrame.size.width,
newTitle.frame.size.height);
Było to konieczne, ponieważ WYSOKOŚĆ oldFrame
„s była zbyt mała dla mojej większej czcionki (rozmiar 20), powodując kilka liter, aby obcięte na dole. Nawet przy tej korekcie, jeśli tekst jest zbyt duży, powiedz większy niż boldSystemFontOfSize: 26, tekst zostanie wyświetlony zbyt blisko lub w przyciskach poniżej. Zmiana rozmiaru ramki arkusza nie pomaga, ponieważ przyciski wydają się być zakotwiczone do góry.
Przypuszczalnie robi
CGRect oldFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
nie narusza politykę Apple o nie używając żadnego wewnętrznego API, prawda?
UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:@"SpecifySearch"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"UncategorizedContacts" , nil];
//as.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
[as showFromTabBar:self.tabBarController.tabBar];
if(as.subviews.count > 0
&& [[as.subviews objectAtIndex:0] isKindOfClass:[UILabel class]]){
UILabel* l = (UILabel*) [as.subviews objectAtIndex:0];
[l setFont:[UIFont boldSystemFontOfSize:20]];
}
[as release];
Tak jak pokazał conecon, można uzyskać wskaźnik i manipulować nim. Jeśli dobrze rozumiem, co próbujesz zrobić, to:
[sheet showInView:[self.view window]];
UILabel *title = [[sheet subviews] objectAtIndex:0];
title.font = [UIFont boldSystemFontOfSize:20];
title.textAlignment = UITextAlignmentCenter;
Mam nadzieję, że to pomoże!
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Share" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Facebook", @"Twitter",nil];
[sheet showInView:self.view];
if (![[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
CGRect labelFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
[[[sheet subviews] objectAtIndex:0] removeFromSuperview];
UILabel *newTitle = [[UILabel alloc] initWithFrame:labelFrame];
newTitle.font = [UIFont boldSystemFontOfSize:17];
newTitle.textAlignment = UITextAlignmentCenter;
newTitle.backgroundColor = [UIColor clearColor];
newTitle.textColor = [UIColor whiteColor];
newTitle.text = @"Share";
[sheet addSubview:newTitle];
}
Z UIActionSheet Class Reference:
UIActionSheet nie jest przeznaczony do podklasy, nie należy dodawać widoki do swojej hierarchii. Jeśli chcesz przedstawić arkusz z większą personalizacją niż w interfejsie API interfejsu UIActionSheet, możesz utworzyć własny i zaprezentować go modalnie za pomocą
presentViewController:animated:completion:
.
- 1. c3js: Czy istnieje sposób na zmianę rozmiaru czcionki?
- 2. PhoneGap: Czy istnieje sposób, aby zatrzymać zmianę rozmiaru widoku klawiatury?
- 3. Najprostszy sposób zmiany czcionki i rozmiaru czcionki
- 4. Czy istnieje sposób na zmianę właściciela JDialog?
- 5. Jak zakodować zielony przycisk w arkuszu UIActionSheet?
- 6. Najszybszy sposób na zmianę rozmiaru obrazu
- 7. Czy istnieje sposób na uzyskanie pi w arkuszu kalkulacyjnym CSS?
- 8. Czy w Eclipse istnieje sposób na zmianę poziomu zgodności ECMAScript?
- 9. Czy istnieje sposób na zmianę formatowania daty w JSON?
- 10. Czy istnieje sposób na zmianę współczynnika replikacji RDD w Spark?
- 11. Czy istnieje sposób na zmianę typu kolumny w tabeli ula?
- 12. Czy istnieje sposób na zmianę koloru czcionki Jradiobuttons za pomocą UImanager
- 13. Jak zatrzymać zmianę rozmiaru widgetu Tkinter Text przy zmianie czcionki?
- 14. Czy istnieje sposób na zmianę katalogu .net mvc bin dir?
- 15. Czy istnieje łatwy sposób na zmianę wersji PHP podczas programowania?
- 16. Czy istnieje sposób na zmianę opcji kompilacji gcc dla klejnotów?
- 17. Czy istnieje sposób na zmianę nazwy etykiety TFS?
- 18. Czy istnieje sposób na zmianę zachowania menu vim omnicomplete?
- 19. Preferowany sposób kontroli na środku na zmianę rozmiaru
- 20. Zmiana rozmiaru czcionki na AlertDialog
- 21. Określanie rozmiaru czcionki użytkownika
- 22. Czy istnieje prosty sposób na uzyskanie rozmiaru obiektu java?
- 23. Konwertowanie rozmiaru czcionki WPF na "standardowy" rozmiar czcionki
- 24. Czy istnieje sposób na zwiększenie limitu rozmiaru stosu/rekurencji?
- 25. zmiana rozmiaru czcionki elementu textview w Androidzie
- 26. zmiana rozmiaru czcionki tekstu
- 27. Czy istnieje sposób ustawienia oddzielnego krótkiego tytułu dla UITabBar?
- 28. Zmień rozmiar Colorbox na zmianę rozmiaru okna
- 29. Ignorowanie ustawienia rozmiaru czcionki ICS
- 30. Zmiana rozmiaru czcionki kodu w WebStorm IDE
Prawdopodobnie nie ma obsługiwanego sposobu, aby to zrobić. Prawdopodobnie możesz uzyskać odniesienie do widoku arkusza akcji, a następnie przejść przez niego, aby znaleźć tytuł UILabel i edytować ten widok bezpośrednio, ale może to pęknąć w przyszłości, jeśli implementacja systemu operacyjnego zmieni się. – Nimrod