今天在项目中用到了动态适配文本的高度,特此记下,以便下次方便使用……
- (void)viewDidLoad
{
[super viewDidLoad];
[self drawScrollViewContentParaWithQ:@"UIScroolerView" A:@"根据文本的多少动态调整UIScroolerView"];
// Do any additional setup after loading the view from its nib.
}
- (void) drawScrollViewContentParaWithQ:(NSString*)question_ A:(NSString*)answer_
{
// 初始化问题的背景图
UIImageView *ui_imgV_Qbg = [[UIImageView alloc] init];
[ui_imgV_Qbg setImage:[UIImage imageNamed:@"img_online_question_bg.png"]];
// 问题ICON
UIImageView *ui_imgV_QIcon = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 40)];
[ui_imgV_QIcon setImage:[UIImage imageNamed:@"img_online_question_icon.png"]];
[ui_imgV_Qbg addSubview:ui_imgV_QIcon];
// 问题内容
UILabel *ui_labelQ = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];
UIFont *ui_fontQ = [UIFont fontWithName:@"Arial" size:18];
CGSize sizeQ = CGSizeMake(240,2000);
[ui_labelQ setBackgroundColor:[UIColor clearColor]];
[ui_labelQ setTextColor:[UIColor colorWithRed:102/255.f green:102/255.f blue:102/255.f alpha:1]];
[ui_labelQ setNumberOfLines:0];
[ui_labelQ setFont:ui_fontQ];
[ui_labelQ setText:question_];
ui_labelQ.lineBreakMode = UILineBreakModeWordWrap;
CGSize labelsizeQ = [question_ sizeWithFont:ui_fontQ constrainedToSize:sizeQ lineBreakMode:UILineBreakModeWordWrap];
// 判断文字是否在一行上
CGFloat floatQY = 0;
if (labelsizeQ.height <= 40) {
labelsizeQ.height = 40;
}else{
floatQY = 10;
}
[ui_labelQ setFrame:CGRectMake(40, floatQY, labelsizeQ.width, labelsizeQ.height)];
[ui_imgV_Qbg addSubview:ui_labelQ];
// 重新设置问题背景的大小
[ui_imgV_Qbg setFrame:CGRectMake(0, 20, 290, ui_labelQ.frame.size.height + ui_labelQ.frame.origin.y + 10)];
// 初始化答案的背景图
UIImageView *ui_imgV_Abg = [[UIImageView alloc] init];
[ui_imgV_Abg setImage:[UIImage imageNamed:@"img_online_answer_bg.png"]];
[self.ui_scrollview_question addSubview:ui_imgV_Abg];
[self.ui_scrollview_question addSubview:ui_imgV_Qbg];
// 答案ICON
UIImageView *ui_imgV_AIcon = [[UIImageView alloc] initWithFrame:CGRectMake(6, 10, 18, 20)];
[ui_imgV_AIcon setImage:[UIImage imageNamed:@"img_online_answer_icon.png"]];
[ui_imgV_Abg addSubview:ui_imgV_AIcon];
// 答案内容
UILabel *ui_labelA = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];
UIFont *ui_fontA = [UIFont fontWithName:@"Arial" size:12];
CGSize sizeA = CGSizeMake(240,2000);
[ui_labelA setBackgroundColor:[UIColor clearColor]];
[ui_labelA setTextColor:[UIColor colorWithRed:102/255.f green:102/255.f blue:102/255.f alpha:1]];
[ui_labelA setNumberOfLines:0];
[ui_labelA setFont:ui_fontA];
[ui_labelA setText:answer_];
ui_labelA.lineBreakMode = UILineBreakModeWordWrap;
CGSize labelsizeA = [answer_ sizeWithFont:ui_fontA constrainedToSize:sizeA lineBreakMode:UILineBreakModeWordWrap];
CGFloat floatAY = 0;
if (labelsizeA.height <= 40) {
labelsizeA.height = 40;
}else{
floatAY = 10;
}
[ui_labelA setFrame:CGRectMake(40, floatAY, labelsizeA.width, labelsizeA.height)];
[ui_imgV_Abg addSubview:ui_labelA];
// 重新设置问题背景的大小
[ui_imgV_Abg setFrame:CGRectMake(0, ui_imgV_Qbg.frame.origin.y + ui_imgV_Qbg.frame.size.height - 2, 290, ui_labelA.frame.size.height + ui_labelA.frame.origin.y + 10)];
// 设置scrollView大小
[self.ui_scrollview_question setContentSize:CGSizeMake(280, ui_imgV_Abg.frame.origin.y + ui_imgV_Abg.frame.size.height)];
}