iOS-SDAutoLayout使用

阮轶
2023-12-01

介绍  :一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,简单易用的AutoLayout库

github地址:

https://github.com/gsdios/SDAutoLayout     (也可以Cocoapods直接到工程上去) .

对于一个小白来说是再好不过的一个工具了!!

简单布局使用:

由此看出SDAutoLayout跟线性布局一样的   ,同时给出多种布局选择参数:

.leftEqualToView(_view); (左间距跟参照_View距离相同,以此类推上下左右有).

.widthRatioToView(_View,1);(设置宽度[高也一样]是参照_View的多少倍,1代表宽一样 也可以零点几倍这样).

.widthEqualToHeight(_View); (设置宽度与参照_View高度相同[高也一样] 设置图标时好用).

还有设置最大,最小值的根据个人情况去文档查看吧!!!

富文本自适应(单行):

[_View  setSingleLineAutoResizeWithMaxWidth:0]; (MaxWidth指的是最大距离) 

Lable高度自适应:

一般设置固定宽度和行数numberOfLines = 0 再加.autoHeightRatio(0);

UIView 高度、宽度自适应相关方法:

UIScrollView 内容竖向自适应、内容横向自适应方法:

UIButton 设置button根据单行文字自适应:

更多方法可以自己查阅  下面是我用它写个标签选择器(复选):

UITableView 方法,cell自适应高度

1 .第一步 Cell布局好,UIView布局一样 .记得最后添加

[self setupAutoHeightWithBottomView:self.removeButton bottomMargin:10];

不然无法获取高度!

2 .第二步 ,在代理返回里面添加

/**

* 返回计算出的cell高度

* model              : cell的数据模型实例

* keyPath            : cell的数据模型属性的属性名字符串(即kvc原理中的key)

* cellClass          : 当前的indexPath对应的cell的class

* contentViewWidth  : cell的contentView的宽度

*/

3 .第三步 缓存cell (有二级菜单不适合)

附加   UIWebView 内容自适应

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

//获取页面高度(像素)

NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString: @"document.body.clientHeight"];

float clientheight = [clientheight_str floatValue];

CGFloat h =(kSCREEN_HEIGHT-64)*18/100+20;

NSLog(@"高度==%lf",h);

webView.frame = CGRectMake(0,h, kSCREEN_WIDTH, clientheight);

//获取WebView最佳尺寸(点)

CGSize frame = [webView sizeThatFits:webView.frame.size];

//获取内容实际高度(像素)

NSString * height_str= [webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('webview_content_wrapper').clientHeight + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-top'))  + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-bottom'))"];

height = [height_str floatValue];

//内容实际高度(像素)* 点和像素的比

height = height * frame.height / clientheight;

//再次设置WebView高度(点)

webView.frame = CGRectMake(0,h, kSCREEN_WIDTH, height);

}



作者:我不相信me
链接:https://www.jianshu.com/p/fe212ea11961
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 类似资料: