Вот обновленная версия для iOS7.0 +.
Я также улучшил ответ выше, используя метод sizeWithAttributes:
, который возвращает границы текста, позволяя правильно расположить текст перед его рисованием. Это устраняет необходимость жесткого кодирования любых настроек, которые будут нарушены, если вы используете шрифт другого размера или другой шрифт.
- (void) drawString: (NSString*) s
withFont: (UIFont*) font
inRect: (CGRect) contextRect {
/// Make a copy of the default paragraph style
NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
/// Set line break mode
paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
/// Set text alignment
paragraphStyle.alignment = NSTextAlignmentCenter;
NSDictionary *attributes = @{ NSFontAttributeName: font,
NSForegroundColorAttributeName: [UIColor whiteColor],
NSParagraphStyleAttributeName: paragraphStyle };
CGSize size = [s sizeWithAttributes:attributes];
CGRect textRect = CGRectMake(contextRect.origin.x + floorf((contextRect.size.width - size.width) / 2),
contextRect.origin.y + floorf((contextRect.size.height - size.height) / 2),
size.width,
size.height);
[s drawInRect:textRect withAttributes:attributes];
}