У меня проблема с лицом при установке другого типа шрифта и цвета в одном UILable с использованием атрибута. Моя проблема заключается в том, как получить точную высоту таблицы, поэтому я обеспечил высоту до высоты ячеек и поддерживал мой пользовательский интерфейс и текст, не разрезанный.Как вычислить высоту UILabel, если мы установили разные типы NSFontAttributeName в UILabel?
меня попробовать следующие вещи: КОД:
int italicHeight = [AppSingletonObj get_LblHeight:strJoin withWidth:270 withFont:_SETITALICFONT(14.0)];
int normalTextHeight = [AppSingletonObj get_LblHeight:strCmt withWidth:270 withFont:_SETREGULARFONT(14.0)];
int cellheight = italicHeight+normalTextHeight;
Когда я установить рамку на UILabel в то время я использовал ниже код
=========== ================================================== ===
int heightlbl = [AppSingletonObj get_LblHeight:strJoinTime withWidth:lblnotifyDesWidthAnswerQues withFont:_SETREGULARFONT(14.0)];
======================================== ===============
Если я вычислил разную высоту и установил эту высоту для метки, тогда высота будет больше, а текст не подходит для вертикального центра.
================================================================================================================================== ==========
- (CGFloat)get_LblHeight:(NSString*)str withWidth:(CGFloat)width withFont:(UIFont *)uiFont {
@try
{
// Get text
CFMutableAttributedStringRef attrString = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
CFAttributedStringReplaceString (attrString, CFRangeMake(0, 0), (CFStringRef) str);
CFIndex stringLength = CFStringGetLength((CFStringRef) attrString);
// Change font
CTFontRef ctFont = CTFontCreateWithName((__bridge CFStringRef) uiFont.fontName, uiFont.pointSize, NULL);
CFAttributedStringSetAttribute(attrString, CFRangeMake(0, stringLength), kCTFontAttributeName, ctFont);
// Calc the size
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString);
CFRange fitRange;
CGSize frameSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, 0), NULL, CGSizeMake(width, CGFLOAT_MAX), &fitRange);
CFRelease(ctFont);
CFRelease(framesetter);
CFRelease(attrString);
return frameSize.height +05;
}
@catch (NSException *exception)
{
NSLog(@"Exception heightEmoji = %@",[exception description]);
}
}
================================= ====================