2012-07-31 30 views
6

Tôi có 2 chuỗi được gán là 'A' và '.'Văn bản cốt lõi - Chiều cao của glyph

Tôi cần tính chiều cao của từng chuỗi này. Hiện tại chiều cao được trả về giống nhau cho cả hai, có vẻ như trả lại chiều cao tối đa có thể cho ký tự cao nhất trong một phông chữ nhất định (ngay cả khi ký tự đó không có trong chuỗi).

Tôi muốn có chiều cao pixel chính xác cho mỗi ký tự này, để tôi có thể thay đổi kích thước chế độ xem xung quanh chúng phù hợp với ký tự (glyph). Tôi đã thử bằng cách sử dụng CTFramesetterSuggestFrameSizeWithConstraints() và CTLineGetTypographicBounds() nhưng nó trả về một số tương tự như phương thức kích thước chuỗi được phân bổ.

Sẽ đánh giá cao mọi mẹo về cách thực hiện việc này!

Trả lời

7

Got có cuối cùng, bạn có thể làm điều đó như thế này:

// Create an attributed string 
CTLineRef line = CTLineCreateWithAttributedString(_string); 

// Get an array of glyph runs from the line 
CFArrayRef runArray = CTLineGetGlyphRuns(line); 

// loop through each run in the array  
CTRunRef run = .... 

// Get the range of the run   
CFRange range = CFRangeMake... 

// Use CTRunGetImageBounds         
CGRect glyphRect = CTRunGetImageBounds(run, context, range); 

// glyphRect now contains the bounds of the glyph run, if the string is just 1 character you have the correct dimensions of that character. 
Các vấn đề liên quan