Quartz 2d / Core Graphics: What is the right way to draw some text?

笑着哭i 提交于 2019-12-21 12:24:25

问题


I've been at this for awhile, it seems that there's many ways to go about this in quartz 2d:

1) Draw text using core graphics methods...

CGContextSelectFont
CGContextSetRGBFillColor
CGContextShowTextAtPoint

and on and on, which is horribly low level.

2) using NSString drawAtPoint

(so far the method I like)

NSString* text = @"Hello";
[text drawAtPoint:point withFont:font];

3) using UILabel

I've read this somewhere but not too sure if this is possible. but I'm thinking that instantiating a UILabel within drawRect would be pretty costly as drawRect probably gets called a zillion times. ??


I'm doing ok with 2. (using NSString drawAtPoint) for the moment but I wanted to get some opinions. Again, I'm trying to create text within drawRect (I subclassed a view) because I'm also drawing shapes along with text, what is the right way?

Thanks


回答1:


#1 doesn't support international characters. So, don't use it if you use it to draw texts inputted by a user.

So, please use #2 unless you're absolutely sure that the text only contains standard ASCII characters.




回答2:


#2 is how I generally do it unless I need the more precise control of using CG/CT




回答3:


While I agree with Yuji that you should not use #1, I would add that if at all possible you should use a UILabel instead of custom drawing, because if you can avoid implementing -drawRect: at all, anywhere, you should.



来源:https://stackoverflow.com/questions/3182709/quartz-2d-core-graphics-what-is-the-right-way-to-draw-some-text

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!