Poszukuje się praktycznie wszystkiego, co odpowiada kakao o wartości [UILabel adjustsFontSizeToFitWidth]
.Jak mogę powiedzieć NSTextField, aby automatycznie zsynchronizował rozmiar czcionki, aby dopasować ją do tekstu?
Odpowiedz
Użyłem doskonałego NS (przypisanego) ciągu Jerry'ego Krinocka + Geometrics (located here) i małej metody podobnej do poniższej. Nadal jestem zainteresowany prostszym sposobem.
- (void) prepTextField:(NSTextField *)field withString:(NSString *)string
{
#define kMaxFontSize 32.0f
#define kMinFontSize 6.0f
float fontSize = kMaxFontSize;
while (([string widthForHeight:[field frame].size.height font:[NSFont systemFontOfSize:fontSize]] > [field frame].size.width) && (fontSize > kMinFontSize))
{
fontSize--;
}
[field setFont:[NSFont systemFontOfSize:fontSize]];
[field setStringValue:string];
[self addSubview:field];
}
Nie zapomnij zajrzeć do superklatek. NSTextField jest rodzajem NSControl, a każdy NSControl odpowiada na the sizeToFit
message.
Rozwiązałem go, tworząc podklasę NSTextFieldCell, która przesłania rysunek ciągu. Wygląda na to, czy łańcuch pasuje, a jeśli nie, zmniejsza rozmiar czcionki, aż do jej dopasowania. To może być bardziej efektywne i nie mam pojęcia, jak to będzie zachowywać się, gdy cellFrame
ma szerokość 0. Niemniej jednak było Good Enough ™ dla moich potrzeb.
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
NSAttributedString *attributedString;
NSMutableAttributedString *mutableAttributedString;
NSSize stringSize;
NSRect drawRect;
attributedString = [self attributedStringValue];
stringSize = [attributedString size];
if (stringSize.width <= cellFrame.size.width) {
// String is already small enough. Skip sizing.
goto drawString;
}
mutableAttributedString = [attributedString mutableCopy];
while (stringSize.width > cellFrame.size.width) {
NSFont *font;
font = [mutableAttributedString
attribute:NSFontAttributeName
atIndex:0
effectiveRange:NULL
];
font = [NSFont
fontWithName:[font fontName]
size:[[[font fontDescriptor] objectForKey:NSFontSizeAttribute] floatValue] - 0.5
];
[mutableAttributedString
addAttribute:NSFontAttributeName
value:font
range:NSMakeRange(0, [mutableAttributedString length])
];
stringSize = [mutableAttributedString size];
}
attributedString = [mutableAttributedString autorelease];
drawString:
drawRect = cellFrame;
drawRect.size.height = stringSize.height;
drawRect.origin.y += (cellFrame.size.height - stringSize.height)/2;
[attributedString drawInRect:drawRect];
}
Aby czcionka była prawidłowo wycentrowana pionowo, potrzebny jest następujący wiersz tuż przed 'while':' [mutableAttributedString removeAttribute: @ "NSOriginalFont" zakres: NSMakeRange (0, [mutableAttributedString length])]; ' – DarkDust
- 1. Podgląd tekstu: dopasuj rozmiar czcionki, aby dopasować do rodzica
- 2. Skaluj rozmiar czcionki SKLabelNode, aby dopasować?
- 3. Jak mogę utworzyć widok tekstowy, który automatycznie zmienia rozmiar czcionki, aby pasował do miejsca?
- 4. C# Skalowanie treści UserControl, aby dopasować użytkowników Dpi/Rozmiar czcionki
- 5. Jak dopasować rozmiar tekstu do rozmiaru Silverlight?
- 6. Skróć NSString, aby dopasować rozmiar?
- 7. Jak zostawić podkładkę NSString, aby dopasować ją do stałej szerokości?
- 8. Czy istnieje szybka metoda (skrót klawiaturowy itp.), Aby automatycznie dopasować rozmiar przycisku, aby dopasować rozmiar obrazu za pomocą scenorysów?
- 9. Zmienić rozmiar czcionki, aby wypełnić UITextView?
- 10. iTextSharp: Jak zmienić rozmiar obrazu, aby dopasować go do rozmiaru?
- 11. W Qt 4.6.x, w jaki sposób automatycznie dopasować rozmiar tekstu do określonej szerokości?
- 12. Zmień rozmiar zewnętrznej zawartości witryny, aby dopasować do szerokości iFrame
- 13. Rozmiar czcionki dostosowany automatycznie do rozmiaru
- 14. Automatycznie dopasuj rozmiar czcionki w mapie termicznej seaborn
- 15. Jak ustawić rozmiar czcionki tekstu w Unity?
- 16. Jak zmienić rozmiar obrazu, aby dopasować komórkę UITableView?
- 17. Zmień rozmiar danych wejściowych, aby dopasować je do zawartości
- 18. Jak mogę powiedzieć Django, aby zapisać moją testową bazę danych?
- 19. Jak dopasować rozmiar i maksymalną długość pola wprowadzania tekstu?
- 20. Jak ustawić rozmiar UIBarButton w systemie iOS 11, aby dopasować rozmiar do iOS 10
- 21. Zmień rozmiar TEKSTU, aby zmieścił się na UITextView
- 22. Jak ustawić rozmiar domyślnej czcionki ładowanej przez PIL, aby pasowała do mojej matrycy 8x8?
- 23. Android - ustawić tapetę, aby dopasować rozmiar ekranu telefonu
- 24. Uzyskaj wysokość tekstu, w tym rozmiar czcionki i ustaw ją na taką wysokość.
- 25. Skaluj tekst w widoku, aby dopasować?
- 26. Jak mogę powiedzieć WebClient HtmlUnit, aby pobrać obrazy i css?
- 27. Jak mogę powiedzieć kompilatorowi, aby nie tworzył obiektu tymczasowego?
- 28. Jak mogę powiedzieć Operacje w Google, aby przesyłać dźwięk?
- 29. Jak mogę powiedzieć Scrapy, aby indeksował tylko linki wewnątrz Xpath?
- 30. Jak mogę powiedzieć ORM Django, aby odwrócić kolejność wyników zapytania?
Odpowiedziałem na to dla kogoś innego. Możesz zobaczyć moją odpowiedź [tutaj] (http://stackoverflow.com/questions/2908704/get-nstextfield-contents-to-scale/2911982#2911982). – regulus6633