Я работаю над новой версией своего приложения и пытаюсь заменить устаревшие сообщения, но не могу пройти мимо этого.drawInRect: withAttributes vs drawInRect: withFont: lineBreakMode: выравнивание
Не могу понять, почему drawInRect:withAttributes
не работает. Код отображается правильно, когда отправляется сообщение drawInRect:withFont:lineBreakMode:alignment
, но не работает, когда отправляется drawInRect:withAttributes
.
Я использую тот же прямоугольник и шрифт, и я уверен, что это тот же стиль текста. Константы просто позиционируют прямоугольник чуть ниже изображения, но я использую один и тот же прямоугольник для обоих вызовов, поэтому я уверен, что прямоугольник правильный.
(обратите внимание, что bs.name используется ниже, является объектом NSString)
CGRect textRect = CGRectMake(fCol*kRVCiPadAlbumColumnWidth,
kRVCiPadAlbumColumnWidth-kRVCiPadTextLabelYOffset,
kRVCiPadAlbumColumnWidth,
kRVCiPadTextLabelHeight);
NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
textStyle.lineBreakMode = NSLineBreakByWordWrapping;
textStyle.alignment = NSTextAlignmentCenter;
UIFont *textFont = [UIFont systemFontOfSize:16];
Это не работает (ничего не рисуется на экране), используя переменные сверху
[bs.name drawInRect:textRect
withAttributes:@{NSFontAttributeName:textFont,
NSParagraphStyleAttributeName:textStyle}];
Это работает (строка рисуется правильно на экране), используя те же переменные сверху
[bs.name drawInRect:textRect
withFont:textFont
lineBreakMode:NSLineBreakByWordWrapping
alignment:NSTextAlignmentCenter];
Любая помощь была бы замечательной. Благодарю.
Что вы имеете в виду, говоря, что 'drawInRect: withAttributes:' не работает? –
Очень хороший вопрос. Извините, я не уточнил. Строка, содержащаяся в bs.name, правильно рисуется на экране с помощью drawInRect: withFont: lineBreakMode: сообщение выравнивания, но не появляется при использовании сообщения drawInRect: withAttributes (ничего не нарисовано). –