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