项目开发中经常会遇到弹框的需求,如果弹框中文字内容是固定的那么弹框高度也是固定的很好写。如果文字从接口获取,并且要求弹框高度随文字高度变化就要考虑多种情况了。
至少要考虑三种情况,分别给弹框设置一个最小高度和最大高度。
1.如果当前文字内容高度<规定的文字内容最小高度 ,那么当前弹框高度=规定的弹框最小高度
2.如果规定的文字内容最小高度<当前文字内容高度<规定的文字内容最大高度 ,那么当前弹框高度根据当前文字高度自适应
3.如果当前文字内容高度>规定的文字内容最大高度 ,那么当前弹框高度=规定的弹框最大高度,并且多出来的文字通过滑动展示
Xib中具体操作如下:
1.添加一个ScrollView,添加上下左右和高度约束
2.在ScrollView里面添加一个Label,并设置文字为多行
3.双指按住Label,拖向ScrollView松开,分别添加上下左右约束,并且把约束设置为0
4.设置Label和ScrollView的宽度相等
5.把Label、ScrollView和ScrollView的高度约束拖动到.m文件
6.在.m文件添加如下代码,给ScrollView分别设置一个最小高度和最大高度,分别测试短文本和长文本的效果。注:如果是UIView,设置高度的代码要放在 layoutSubviews
方法里面
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// self.label.text = @"测试";
// self.label.text = @"本科生教务系统(含选课及教务服务)将于9月6日23:00起进行维护,维护时间预计1小时,期间系统可能无法访问。为了避免影响您正常使用相关服务,请您提前做好相应处理。带来的不便,敬请广大师生谅解。本科生教务系统(含选课及教务服务)将于9月6日23:00起进行维护。";
self.label.text = @"本科生教务系统(含选课及教务服务)将于9月6日23:00起进行维护,维护时间预计1小时,期间系统可能无法访问。为了避免影响您正常使用相关服务,请您提前做好相应处理。带来的不便,敬请广大师生谅解。本科生教务系统(含选课及教务服务)将于9月6日23:00起进行维护,维护时间预计1小时,期间系统可能无法访问。为了避免影响您正常使用相关服务,请您提前做好相应处理。带来的不便,敬请广大师生谅解。";
}
-(void)viewDidAppear:(BOOL)animated{
if(self.scrollView.contentSize.height < 138){
self.scrollHeight.constant = 138;
}else if (self.scrollView.contentSize.height > 230){
self.scrollHeight.constant = 230;
}else{
self.scrollHeight.constant = self.scrollView.contentSize.height;
}
}
7.测试效果如下:
超短文本 短文本 长文本
网友评论