我們有時候在寫項目的時候,會碰到,意見反饋,還有其他地方,講座活動細則等需要大篇展示的文本,
因為每次服務器返回的內容大小不一,所以需要動態的調整label的寬高:
在ios 6 的時候可以:
-(void)creatLabel { //根據文字 字數動態確定label寬高 _nameLabel = [[UILabel alloc]init]; _nameLabel.frame = CGRectMake(100, 100, 100, 40); _nameLabel.backgroundColor = [UIColor redColor]; _nameLabel.text = @"菩提本無樹"; //設置label的字體 HelveticaNeue Courier UIFont *font = [UIFont fontWithName:@"HelveticaNeue" size:24.0f]; _nameLabel.font = font; //根據字體得到nsstring的尺寸 CGSize size = [_nameLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName, nil]]; //名字的高 CGFloat nameH = size.height; //名字的寬 CGFloat nameW = size.width; _nameLabel.frame = CGRectMake(100, 100, nameW, nameH); [self.view addSubview:_nameLabel]; }
ios 7 的時候可以:
-(void)creatTextField { //根據正文內容多少,動態確定正文content的frame _content = [[UILabel alloc]init]; _content.frame = CGRectMake(17, 200, self.view.frame.size.width-34, 120); _content.backgroundColor = [UIColor redColor]; _content.clipsToBounds = YES; _content.layer.cornerRadius = 10; _content.numberOfLines = 0; _content.layer.borderColor = [UIColor grayColor].CGColor; _content.layer.borderWidth = 0.8; _content.text = @"今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗"; //寬度 CGFloat contentW = self.view.bounds.size.width - 34; //label的字體 HelveticaNeue Courier UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:18.0f]; _content.font = fnt; // iOS7中用以下方法替代過時的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法 CGRect tmpRect = [_content.text boundingRectWithSize:CGSizeMake(contentW, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil] context:nil]; // 高度H CGFloat contentH = tmpRect.size.height; NSLog(@"調整后的顯示寬度:%f,顯示高度:%f",contentW,contentH); _content.frame = CGRectMake(17, 200, contentW,contentH); [self.view addSubview:_content]; }
這樣可以很好的解決這個問題!