1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//
// UIView+TileSubviews.h
// Gengmei
//
// Created by wangyang on 2016/10/26.
// Copyright © 2016年 更美互动信息科技有限公司. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIView (TileSubviews)
/**
按照参数设置好每个subview的frame,并返回view的总体高度,该高度包含padding的top与bottom
|----------------------------------|
| padding.top |
| |--------------| |-------| |
| | Label | | Image | |
| | | | | |
| |--------------| |-------| |
| padding.bottom |
|----------------------------------|
@param views 待摆放的subviews
@param padding 父视图与subviews整体的间距
@param spacing 每个subview之间的水平、竖直方向的间距
@param maxWidth 父view的最大宽度,包含padding的left与right
@param caculater 计算每个subview的大小, 可以为nil,将自动使用每个view.intrinsicContentSize
@return view的总体高度
*/
- (CGFloat)layoutSubviews:(NSArray<UIView *> *)views
padding:(UIEdgeInsets)padding
spacing:(CGPoint)spacing
maxWidth:(CGFloat)maxWidth
subviewSize:(CGSize (^ __nullable)(NSUInteger idx))caculater;
- (CGFloat)layoutSubviews:(NSArray<UIView *> *)views
padding:(UIEdgeInsets)padding
spacing:(CGPoint)spacing
maxWidth:(CGFloat)maxWidth
singleLine:(BOOL)singleLine
subviewSize:(CGSize (^ __nullable)(NSUInteger idx))caculater;
@end
NS_ASSUME_NONNULL_END