UITextField,UITextView,UILabel 根据内容来计算高度

在开发的过程中,常常遇到根据内容来决定控件的高度的情况,常见的就是UITextField,UITextView,UILabel这三个控件,下面一UITextView 为例来说明一下:

首先新新建一个textView. 设施text,font

UITextView *textView = [[UITextView
alloc] init];

textView.text =
@"2015-01-19 14:07:47.290 MicroPort[3047:103721] -[PPRevealSideViewController gestureRecognizerDidTap:] [Line 1463] Yes, the tap gesture is animated, this is normal, not a bug! Is there anybody here with a non animate interface? :P";

textView.font = [UIFont
systemFontOfSize:14];

float width =200;

float height =[self
heightForString:textView.text
fontSize:14 andWidth:width];

textView.frame = CGRectmake(0,0,width,height);

[self.view
addSubview:textView];

计算textview高度的方法

- (float)heightForString:(NSString
*)value fontSize:(float)fontSize andWidth:(float)width//根据字符串的的长度来计算UITextView的高度

{

float height = [[NSStringstringWithFormat:@"%@\n
",value]
boundingRectWithSize:CGSizeMake(width,
CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
|
NSStringDrawingUsesFontLeadingattributes:[NSDictionarydictionaryWithObjectsAndKeys:[UIFontsystemFontOfSize:fontSize],NSFontAttributeName,
nil]
context:nil].size.height;

return height;

}

一般情况下常见的需求这个方法都能够满足

时间: 2024-10-01 00:31:51

UITextField,UITextView,UILabel 根据内容来计算高度的相关文章

用视图上移解决UITextField/UITextView被键盘遮盖问题

先看看UILabel/UITextField/UITextView的区别: UILabel 显示的文本只读,无法编辑,可以根据文字个数自动换行:UITextField 可编辑本文,但是无法换行,只能在一行显示:当点击键盘上的return时会收到一个事件做一些事情.UITextView 可编辑文本,提供换行功能. 解决UITextField/UITextView被键盘遮盖问题可以主要参考https://gist.github.com/ruandao/9429305 先记着,有时间做一些整理 参考链

IOS UITextField &UITextView

UITextField 限制textField长度 曾经,以为输入框只是输入字符的,但真的认真为一个登陆界面输入框而改了六七次以后,发现好烦人啊,先谢谢测试的不厌其烦,不杀之恩,不想再用IOS的输入框就是这样子的来敷衍产品汪,认真思考了一下,还真有点不好搞啊,于是呼,找了点测试过能用的代码,贴这里给我们这些菜鸟用,万恶的复制啊,你ctrl v一下,不带走一片云彩. [[NSNotificationCenter defaultCenter]addObserver:self selector:@se

UITextField && UITextView 限制限制字数做法

有许多时候都有这种需求,那就是限制字数操作. 在没有一套好的方法之前,比如textView的限制方法就是利用代理方法 -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if (textView.text.length  >= number) { textView.text = [textView.text substrin

UITextField,UILabel, UIButton,UIAlertview的简单使用

//  Created by 妖精的尾巴 on 15-8-14. //  Copyright (c) 2015年 妖精的尾巴. All rights reserved. // #import "ViewController.h" @interface ViewController ()<UIAlertViewDelegate> @property(nonatomic,strong)UITextField* textField; @end @implementation Vi

swift3.0 对UITextField()输入框输入的内容进行监控

首先需要继承 UITextFieldDelegate class TestViewController: UIViewController,UITextFieldDelegate{ } 添加事件委托 textField.delegate = self 点击输入框时触发以下事件: func textFieldDidBeginEditing(_ textField: UITextField){ } 我的需求为输入一百以内最多为两位小数,使用以下方式对输入的值进行实时监控 func textField

UILabel自适应内容

UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero]; label.text = @“label label label label label label label label label label label label label label label label label label label label label label label label label label label label label

给UIlabel的内容中的特定字符添加颜色,可以调整大小

摘要:实现对NSAttributedString的一个扩展,用法见.m的注释内容 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface NSAttributedString (color) + (instancetype)getAtriWith:(NSString*)markup withDestStr:(NSArray*)deStrs andColor:(NSArray*)colors andFo

IOS UILabel 根据内容自适应高度

iOS Label 自适应高度  适配iOS7以后的版本 更多 self.contentLabelView = [[UILabel alloc] init]; self.contentLabelView.font = SYS_FONT(15); self.contentLabelView.lineBreakMode =NSLineBreakByTruncatingTail ; self.contentLabelView.textColor =  [UIColor colorWithHexStri

[iOS]UITextView在输入内容时光标不在最下方的解决方案

使用UITextView的时候经常出现光标不在最下方的情况...(iPhone6+iOS8) 解决方法: 首先去除所有的Padding: _textView.textContainerInset = UIEdgeInsetsZero; _textView.textContainer.lineFragmentPadding = 0; 然后在委托方法里加上一行: -(void)textViewDidChange:(UITextView *)textView { // 各种业务 ... [self.t