1. Download FontLabel app source from
http://github.com/zynga/FontLabel
It has a good library with sample to use custom fonts embedded with project. Add FontLabel library to your project.
2. See following to generate label with custom font dynamically.
#define CELL_CONTENT_WIDTH 320.0f
#define CELL_CONTENT_MARGIN 10.0f
//Create Label with specific font, size and text on specific x,y.
- (FontLabel *)getLabel:(CGFloat)x :(CGFloat )y :(NSString *)fontName :(CGFloat )fontSize :(NSString *)text
{
CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN+x), 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
FontLabel *lbl =[[FontLabel alloc] initWithFrame:CGRectMake(x, y, CELL_CONTENT_WIDTH- (CELL_CONTENT_MARGIN+x), size.height)
fontName:fontName pointSize:fontSize];
lbl.textColor = [UIColor blackColor];
lbl.text = text;
lbl.numberOfLines = 0;
//lbl.textAlignment = UITextAlignmentLeft;
lbl.lineBreakMode = UILineBreakModeWordWrap;
lbl.baselineAdjustment = UIBaselineAdjustmentNone;
[lbl sizeToFit];
return lbl;
}
3.You can add labels in tableview cell using cellForRowAtIndexPath method lblID = [self getLabel:CELL_CONTENT_MARGIN :CELL_CONTENT_MARGIN :@"angelina" :24.0f :title];
[cell addSubview: lblID];
4. We need to set tableview cell height according to multiline label height. See following for this:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
FontLabel *lbl = [[self getLabelFromIndex:indexPath] retain];
CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGSize size = [lbl.text sizeWithFont:lbl.font constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
CGFloat height = size.height;
return height + (CELL_CONTENT_MARGIN * 2);
}
where getLabelFromIndex returns label of the cell.Hope, It helps.
No comments:
Post a Comment