今天在项目中用到了动态适配文本的高度,特此记下,以便下次方便使用……
- (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)]; }