iOS动态计算UIScrollView的contentSize示例(页面由Label组成)

 1 #import "ViewController.h"
 2
 3 @interface ViewController ()
 4 {
 5     UIScrollView *_scrollView;
 6 }
 7 //数据源
 8 @property (nonatomic,strong)NSArray *dataArray;
 9
10 @end
11
12 @implementation ViewController
13
14 - (void)viewDidLoad {
15     [super viewDidLoad];
16
17     NSString *path = [[NSBundle mainBundle] pathForResource:@"statuses" ofType:@"plist"];
18     _dataArray = [NSArray arrayWithContentsOfFile:path];
19
20     CGFloat height = 0;
21
22     _scrollView = [[UIScrollView alloc] init];
23     _scrollView.translatesAutoresizingMaskIntoConstraints = NO;
24     [self.view addSubview:_scrollView];
25
26     NSArray *consScrHor = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_scrollView]-0-|" options:NSLayoutFormatAlignmentMask metrics:nil views:NSDictionaryOfVariableBindings(_scrollView)];
27     [self.view addConstraints:consScrHor];
28
29     NSArray *consScrVor = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_scrollView]-0-|" options:NSLayoutFormatAlignmentMask metrics:nil views:NSDictionaryOfVariableBindings(_scrollView)];
30     [self.view addConstraints:consScrVor];
31
32     for (NSDictionary *dict in _dataArray) {
33         //CGSize size = [dict[@"text"] boundingRectWithSize:[UIScreen mainScreen].bounds.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16.0]} context:nil].size;
34         //NSLog(@"size:%@",NSStringFromCGSize(size));
35
36         UILabel *toolLabel = [[UILabel alloc] init];
37         toolLabel.text = dict[@"text"];
38         toolLabel.numberOfLines = 0;
39         CGSize size = [toolLabel sizeThatFits:CGSizeMake([UIScreen mainScreen].bounds.size.width, MAXFLOAT)];
40         toolLabel.frame = CGRectMake(0, height, 375, size.height);
41
42         toolLabel.backgroundColor = [UIColor orangeColor];
43         [_scrollView addSubview:toolLabel];
44
45         height+=size.height;
46
47         UIView *spaceView = [[UIView alloc] initWithFrame:CGRectMake(0, height, 375, 30)];
48         spaceView.backgroundColor = [UIColor yellowColor];
49         [_scrollView addSubview:spaceView];
50         height+=30;
51
52         NSLog(@"%@",dict[@"text"]);
53         NSLog(@"%@",NSStringFromCGSize(size));
54     }
55
56     _scrollView.contentSize = CGSizeMake(375, height);
57
58 }
59
60 - (void)didReceiveMemoryWarning {
61     [super didReceiveMemoryWarning];
62     // Dispose of any resources that can be recreated.
63 }
64
65 @end
时间: 2024-10-24 05:46:45

iOS动态计算UIScrollView的contentSize示例(页面由Label组成)的相关文章

iOS XIB使用UIScrollView 设置 contentsize 无效

一问题描述 今天做个需求,后台获取多个对象信息,如果某个对象为nil,则不会显示,当有多个返回对象的适合,界面不能容纳所有的元素,废话这么多,总之是在xib 中使用 UIScrollView,但是问题是.m文件中设置contentsize 无效. 二 问题分析     xib 中勾选了autolayout选项,在autolayout下,iOS计算UIScrollView的contentsize的机制是略有不同.在autolayout中,会在viewDidAppear之前根据subview的con

iOS 动态计算文本内容的高度

关于ios 下动态计算文本内容的高度,经过查阅和网上搜素,现在看到的有以下几种方法: 1. //  获取字符串的大小  ios6 - (CGSize)getStringRect_:(NSString*)aString { CGSize size; UIFont *nameFont=[UIFont fontWithName:@"Helvetica" size:13]; size=[aString sizeWithFont:nameFont constrainedToSize:CGSize

iOS 动态计算行高,宽等

UILabel有两个计算文字大小的方法: 1.针对对富文本计算NSAttributedString - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary*)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11,

iOS动态计算Label的宽高

1.根据文字计算Label的宽度 1 +(CGFloat)widthOfString:(NSString *)string font:(UIFont *)font height:(CGFloat)height 2 { 3 NSDictionary * dict=[NSDictionary dictionaryWithObject: font forKey:NSFontAttributeName]; 4 CGRect rect=[string boundingRectWithSize:CGSize

iOS 动态计算cell高度实用API

// Use the estimatedHeight methods to quickly calcuate guessed values which will allow for fast load times of the table. // If these methods are implemented, the above -tableView:heightForXXX calls will be deferred until views are ready to be display

IOS中UIScrollView的contentSize、contentOffset和contentInsert属性

IOS中,UIScrollView继承于UIView,扩展了滚动,缩放功能,双协议,其中最常用的UITableview就是继承于该类. UIScrollView中的frame.bounds.contentSize.contentOffset和contentInset属性,这几个属性一直都容易混淆,自己小总结一下: frame是基于superView的坐标系创建的,表示该滚动视图在其父视图中的位置 bounds属性是基于该滚动视图本身的坐标系的,主要用于确定其子视图在该滚动视图上的位置,当boun

IOS中UIScrollView的contentSize、contentOffset和contentInset属性

IOS中,UIScrollView是可以滚动的视图,其中最常用的UITableView就是继承了UIScrollView. 跟所有的view一样,UIScrollView有一个frame属 性,同时,UIScrollView还具有contentSize.contentOffset和contentInset属性.我在学习中,就觉得其中 contentSize和contentOffset相对比较好理解,对contentInset就有点不太好理解.下面具体解释一下. contentSize是UIScr

前端-根据页面大小动态计算字体大小

1 // 动态计算字体大小 2 (function(){ 3 var size= function(){ 4 //获取当前屏幕相关 5 var docElement = document.documentElement; 6 //三元比较计算 7 var clientWidthValue = docElement.clientWidth > 640 ? 640 : docElement.clientWidth; 8 //根据自己需要设置字体大小 9 docElement.style.fontSi

转:动态计算UITableViewCell高度详解

转自:http://www.cocoachina.com/industry/20140604/8668.html 不知道大家有没有发现,在iOS APP开发过程中,UITableView是我们显示内容常见的控件,本人觉得它是UIKit中最复杂的一个控件.今天要向大家介绍的就是如何动态计算UITableViewCell高度的一经验与技巧,在此做一些总结方便朋友们查阅.为了不让讲解空洞抽象,我还是用代码实例的方式进行讲解,这样更容易接收与学习. 本文将介绍四种情况下UITableViewCell的计