Я хочу нарисовать массив строк разного размера шрифта на UIView как this. Я вычислил высоту, необходимую для каждой строки. Массив строки в примере: {«Введите текст», «тот», «будет соответствовать», «прямой»}. Я рассчитать высоту, как показано ниже,Как нарисовать массив NSStrings как UIView без какого-либо ведущего пространства между ними и занимает весь прямоугольник?
@implementation NSString (Additions)
- (CGFloat)heightForFont:(UIFont *)font {
NSAttributedString *attrString = [[NSAttributedString alloc]initWithString:self attributes:@{NSFontAttributeName:font}];
CTLineRef line = CTLineCreateWithAttributedString((__bridge CFAttributedStringRef)attrString);
CGFloat ascent, descent, leading;
CGFloat width = CTLineGetTypographicBounds(line, &ascent, &descent, &leading);
CGFloat height = ascent + descent + leading;
return height;
}
Тогда я пытаюсь нарисовать строку в UIView следующим образом:
- (void)drawStringArray:(NSArray *)splittedStringArray maxYoFString:(CGFloat)maxY rect:(CGRect)rect fontsDict:(NSMutableDictionary *)fontsDict {
//Alter X origin if scaled
CGFloat originX = rect.origin.x;
CGRect drawRect = rect;
drawRect.origin.x = originX;
drawRect.origin.y = 0.0;
CGFloat heightForString = 0.0;
for (int i = 0; i < splittedStringArray.count; i++) {
NSString *string = splittedStringArray[i];
UIFont *font = [fontsDict objectForKey:string];
if(i < splittedStringArray.count -1)
heightForString = [string heightForFont:font];
[string drawInRect:rect withAttributes:@{
NSFontAttributeName : font,
NSForegroundColorAttributeName :self.random.currentTextColor
}];
drawRect.origin.y += heightForString;
}
}
Но всегда есть пространство, которое добавляется между двумя линиями. Я хочу нарисовать строку без какого-либо ведущего пространства. current image, expected image