2015-02-06 25 views
10

iOS7 i późniejszych, możemy użyć - (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context do obliczenia rozmiaru ciągu, ale jestem zdezorientowany z komentarzem na enum NSStringDrawingOptions.Confused by NSStringDrawingOptions item rozumieniu

NSStringDrawingUsesLineFragmentOrigin

Oznacza to podano źródło jest źródłem fragment linii, a nie początek linii bazowej. Ale jaki jest średni początek fragmentu linii i początek linii bazowej.

Podobnie jak WWDC 2013 Session 220 (Advanced układów i efekty tekstowe z tekstem Kit) PDF na stronie 95.

Jeśli pochodzenie fragment linia oznacza niebieską kropkę, co do wyjściowego pochodzenia?

Odpowiedz

9

From the official documentation

Dyskusja

Jeśli NSStringDrawingUsesLineFragmentOrigin jest określona w opcji, to zawija tekst jako ciąg potrzebne, by pasował. Jeśli ciąg znaków jest zbyt duży, aby zmieścił się całkowicie wewnątrz prostokąta, metoda skaluje czcionkę lub dostosowuje odstępy między literami, aby dopasować ciąg znaków do określonych granic.

Jeśli NSStringDrawingUsesLineFragmentOrigin nie jest określona w opcji pochodzenie prostokąta jest bazowy jedynej linii. Tekst zostanie wyświetlony powyżej prostokąta, a nie w jego środku. Dla przykładu , jeśli poda się prostokąt rozpoczynający się od 0,0 i narysuje łańcuch " " zestawiony obok siebie, widoczne będą tylko spadki z "j" i "p" . Reszta tekstu będzie na górnej krawędzi prostokąta.

Ta metoda rysuje linię przy użyciu atrybutów określonych w przypisanym łańcuchu znaków . Jeśli znaki nowego wiersza występują w ciągu znaków , znaki te są honorowane i powodują, że kolejny tekst jest umieszczany w następnym wierszu pod punktem początkowym.

Uwagi specjalne Ta metoda używa domyślnego źródła bazowego przez , więc renderuje ciąg jako pojedynczą linię. Aby wyrenderować ciąg w wielu liniach, określ NSStringDrawingUsesLineFragmentOrigin w opcjach.