Skip to content

Commit cd73266

Browse files
committed
功能升级,BUG修复
1 parent 42d7866 commit cd73266

File tree

11 files changed

+230
-445
lines changed

11 files changed

+230
-445
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
**MyLayout**的所有版本的变更日志都将会在这里记录.
33

44
---
5-
## [V1.9.0](https://github.com/youngsoft/MyLinearLayout/releases/tag/1.9.0)(2019/10/21)
5+
## [V1.9.0](https://github.com/youngsoft/MyLinearLayout/releases/tag/1.9.0)(2019/11/30)
66

77
### Added
88

MyLayout.xcodeproj/project.pbxproj

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,6 @@
171171
20DF42422318F4EA0078CAA0 /* MyFlexLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 20DF42402318F4EA0078CAA0 /* MyFlexLayout.m */; };
172172
20F0DFFD2111749A00CFCE8C /* AllTest11ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F0DFFC2111749A00CFCE8C /* AllTest11ViewController.m */; };
173173
20F0E00021120A8D00CFCE8C /* FLLTest8ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F0DFFF21120A8D00CFCE8C /* FLLTest8ViewController.m */; };
174-
20F4A803237EF0E000D464E7 /* MyLayoutUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 20F4A801237EF0E000D464E7 /* MyLayoutUI.h */; };
175-
20F4A804237EF0E000D464E7 /* MyLayoutUI.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F4A802237EF0E000D464E7 /* MyLayoutUI.m */; };
176-
20F4A805237EF46200D464E7 /* MyLayoutUI.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F4A802237EF0E000D464E7 /* MyLayoutUI.m */; };
177-
20F4A807237FC40900D464E7 /* MyLayoutUIInner.h in Headers */ = {isa = PBXBuildFile; fileRef = 20F4A806237FC40900D464E7 /* MyLayoutUIInner.h */; };
178174
20F783561F60399700BE5B31 /* GLTest3ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F783551F60399700BE5B31 /* GLTest3ViewController.m */; };
179175
4411977B1F6AE78E00C22557 /* GridLayoutDemo5.json in Resources */ = {isa = PBXBuildFile; fileRef = 4411977A1F6AE78E00C22557 /* GridLayoutDemo5.json */; };
180176
444B71911F6A3E3F00331872 /* GLTest5ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 444B71901F6A3E3F00331872 /* GLTest5ViewController.m */; };
@@ -430,9 +426,6 @@
430426
20F0DFFC2111749A00CFCE8C /* AllTest11ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AllTest11ViewController.m; sourceTree = "<group>"; };
431427
20F0DFFE21120A8D00CFCE8C /* FLLTest8ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FLLTest8ViewController.h; sourceTree = "<group>"; };
432428
20F0DFFF21120A8D00CFCE8C /* FLLTest8ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FLLTest8ViewController.m; sourceTree = "<group>"; };
433-
20F4A801237EF0E000D464E7 /* MyLayoutUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyLayoutUI.h; sourceTree = "<group>"; };
434-
20F4A802237EF0E000D464E7 /* MyLayoutUI.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyLayoutUI.m; sourceTree = "<group>"; };
435-
20F4A806237FC40900D464E7 /* MyLayoutUIInner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLayoutUIInner.h; sourceTree = "<group>"; };
436429
20F783541F60398C00BE5B31 /* GLTest3ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLTest3ViewController.h; sourceTree = "<group>"; };
437430
20F783551F60399700BE5B31 /* GLTest3ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLTest3ViewController.m; sourceTree = "<group>"; };
438431
4411977A1F6AE78E00C22557 /* GridLayoutDemo5.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = GridLayoutDemo5.json; sourceTree = "<group>"; };
@@ -822,9 +815,6 @@
822815
182225B41E77E5930081AA4B /* MyFlowLayout.m */,
823816
20DF423F2318F4EA0078CAA0 /* MyFlexLayout.h */,
824817
20DF42402318F4EA0078CAA0 /* MyFlexLayout.m */,
825-
20F4A801237EF0E000D464E7 /* MyLayoutUI.h */,
826-
20F4A802237EF0E000D464E7 /* MyLayoutUI.m */,
827-
20F4A806237FC40900D464E7 /* MyLayoutUIInner.h */,
828818
182225AC1E77E5930081AA4B /* MyLinearLayout.h */,
829819
182225B21E77E5930081AA4B /* MyLinearLayout.m */,
830820
182225AD1E77E5930081AA4B /* MyFloatLayout.h */,
@@ -939,7 +929,6 @@
939929
18C15AF21EDF13F900AADEAC /* MyPathLayout.h in Headers */,
940930
205643161F55A03000E8BDDE /* MyLayoutMath.h in Headers */,
941931
18C15AF31EDF13FF00AADEAC /* MyFrameLayout.h in Headers */,
942-
20F4A803237EF0E000D464E7 /* MyLayoutUI.h in Headers */,
943932
18C15AF41EDF140400AADEAC /* MyBaseLayout.h in Headers */,
944933
18C15AF51EDF140D00AADEAC /* MyLayoutPos.h in Headers */,
945934
18C15AF61EDF141000AADEAC /* MyLayoutSize.h in Headers */,
@@ -953,7 +942,6 @@
953942
18C15AFA1EDF142300AADEAC /* MyLayoutDef.h in Headers */,
954943
205E0C6020B907CC001A8B99 /* MyLayoutPosInner.h in Headers */,
955944
205E0C6120B907D1001A8B99 /* MyLayoutSizeInner.h in Headers */,
956-
20F4A807237FC40900D464E7 /* MyLayoutUIInner.h in Headers */,
957945
205E0C6220B907DB001A8B99 /* MyLayoutInner.h in Headers */,
958946
205E0C6320B907EC001A8B99 /* MyLayoutDelegate.h in Headers */,
959947
);
@@ -1163,7 +1151,6 @@
11631151
20DF42422318F4EA0078CAA0 /* MyFlexLayout.m in Sources */,
11641152
182DB6441EF7876200E2D65D /* MyGridLayout.m in Sources */,
11651153
18C15B001EDF144B00AADEAC /* MyPathLayout.m in Sources */,
1166-
20F4A804237EF0E000D464E7 /* MyLayoutUI.m in Sources */,
11671154
18C15B011EDF144B00AADEAC /* MyFrameLayout.m in Sources */,
11681155
18C15B021EDF144B00AADEAC /* MyBaseLayout.m in Sources */,
11691156
18C15B031EDF144B00AADEAC /* MyLayoutPos.m in Sources */,
@@ -1195,7 +1182,6 @@
11951182
18D3C9731EDF082800D3DE43 /* AllTest2TableViewCell.m in Sources */,
11961183
18D3C95F1EDF07F800D3DE43 /* FOLTest6ViewController.m in Sources */,
11971184
182225D51E77E5930081AA4B /* MyLayoutSize.m in Sources */,
1198-
20F4A805237EF46200D464E7 /* MyLayoutUI.m in Sources */,
11991185
6740E20120A52DC100AFBC5A /* AllTest10Cell.m in Sources */,
12001186
18D3C93A1EDF07C000D3DE43 /* FLLTest2ViewController.m in Sources */,
12011187
467E63CF228CDA660065D080 /* AllTest1TableViewCellForAutoLayout.m in Sources */,

MyLayout/Lib/MyBaseLayout.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,12 +336,18 @@
336336
*/
337337

338338
/**
339-
*视图的宽度布局尺寸,是widthSize.equalTo方法的简化版本。此属性只用于赋值不用于读取!
339+
*视图的宽度布局尺寸,是widthSize.equalTo方法的简化版本。此属性只用于赋值不用于读取!除了设置常规的数字外您还可以设置一些特殊的值:
340+
MyLayoutSize.wrap 表示宽度自适应
341+
MyLayoutSize.fill 表明宽度填充父视图剩余宽度
342+
MyLayoutSize.empty 表明清除宽度约束。
340343
*/
341344
@property(nonatomic,assign) IBInspectable CGFloat myWidth;
342345

343346
/**
344-
*视图的高度布局尺寸,是heightSize.equalTo方法的简化版本。此属性只用于赋值不用于读取!
347+
*视图的高度布局尺寸,是heightSize.equalTo方法的简化版本。此属性只用于赋值不用于读取!除了设置常规的数字外您还可以设置一些特殊的值:
348+
MyLayoutSize.wrap 表示高度自适应
349+
MyLayoutSize.fill 表明高度填充父视图剩余高度
350+
MyLayoutSize.empty 表明清除高度约束。
345351
*/
346352
@property(nonatomic,assign) IBInspectable CGFloat myHeight;
347353

MyLayout/Lib/MyFlexLayout.h

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
//
88

99
#import "MyFlowLayout.h"
10-
#import "MyLayoutUI.h"
1110

1211
/**定义flex的方向类型*/
1312
typedef enum : int {
@@ -89,9 +88,86 @@ extern const int MyFlex_Auto;
8988

9089

9190

92-
@protocol MyFlexItem<MyUIViewUI>
91+
@protocol MyFlexItem
9392

9493
@property(nonatomic, strong, readonly) id<MyFlexItemAttrs> attrs;
94+
@property(nonatomic, weak, readonly) __kindof UIView *view;
95+
96+
97+
/**
98+
视图的宽度设置,如果宽度设置为大于0小于1则表明是相对于父视图宽度的比重值,如果是MyLayoutSize.wrap则表明宽度自适应,如果是MyLayoutSize.fill则表明宽度和父视图相等,如果是MyLayoutSize.empty则表明不设置宽度值。 其他的值就是一个固定宽度值。
99+
*/
100+
-(id<MyFlexItem> (^)(CGFloat))width;
101+
102+
103+
/**
104+
视图的宽度设置,percent表明占用父视图宽度的百分比值,inc表明在百分比值的基础上的增量值。
105+
*/
106+
-(id<MyFlexItem> (^)(CGFloat percent, CGFloat inc))width_percent;
107+
108+
109+
/**
110+
最小宽度限制设置
111+
*/
112+
-(id<MyFlexItem> (^)(CGFloat))min_width;
113+
114+
/**
115+
最大宽度限制设置
116+
*/
117+
-(id<MyFlexItem> (^)(CGFloat))max_width;
118+
/**
119+
视图的高度设置,如果高度设置为大于0小于1则表明是相对于父视图高度的比重值,如果是MyLayoutSize.wrap则表明高度自适应,如果是MyLayoutSize.fill则表明高度和父视图相等,如果是MyLayoutSize.empty则表明不设置高度值,其他的值就是一个固定高度值。
120+
*/
121+
-(id<MyFlexItem> (^)(CGFloat))height;
122+
123+
/**
124+
视图的高度设置,percent表明占用父视图高度的百分比值,inc表明在百分比值的基础上的增量值。
125+
*/
126+
-(id<MyFlexItem> (^)(CGFloat percent, CGFloat inc))height_percent;
127+
128+
129+
/**
130+
最小高度限制设置
131+
*/
132+
-(id<MyFlexItem> (^)(CGFloat))min_height;
133+
134+
/**
135+
最大高度限制设置
136+
*/
137+
-(id<MyFlexItem> (^)(CGFloat))max_height;
138+
139+
//视图的外间距设置。
140+
/**
141+
视图的顶部外间距设置
142+
*/
143+
-(id<MyFlexItem> (^)(CGFloat))margin_top;
144+
/**
145+
视图的底部外间距设置
146+
*/
147+
-(id<MyFlexItem> (^)(CGFloat))margin_bottom;
148+
/**
149+
视图的左边外间距设置
150+
*/
151+
-(id<MyFlexItem> (^)(CGFloat))margin_left;
152+
/**
153+
视图的右边外间距设置
154+
*/
155+
-(id<MyFlexItem> (^)(CGFloat))margin_right;
156+
/**
157+
视图的四周外间距设置
158+
*/
159+
-(id<MyFlexItem> (^)(CGFloat))margin;
160+
/**
161+
视图的可视设置
162+
*/
163+
-(id<MyFlexItem> (^)(MyVisibility))visibility;
164+
165+
166+
//添加到父视图中
167+
-(__kindof UIView* (^)(UIView*))addTo;
168+
169+
//添加子视图
170+
-(id<MyFlexItem> (^)(UIView*))add;
95171

96172
/**
97173
条目在弹盒中的排列顺序,值越大越往后排。

MyLayout/Lib/MyFlexLayout.m

Lines changed: 138 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
//
88

99
#import "MyFlexLayout.h"
10-
#import "MyLayoutUIInner.h"
1110
#import "MyLayoutInner.h"
1211
#import <objc/runtime.h>
1312

@@ -281,6 +280,144 @@ -(instancetype)initWithView:(UIView*)view attrs:(id<MyFlexItemAttrs>)attrs
281280
return _attrs;
282281
}
283282

283+
-(id<MyFlexItem> (^)(CGFloat))width
284+
{
285+
return ^id(CGFloat val) {
286+
if (val > 0 && val < 1)
287+
self.view.widthSize.equalTo(@(MyLayoutSize.fill)).multiply(val);
288+
else
289+
self.view.widthSize.equalTo(@(val));
290+
return self;
291+
};
292+
}
293+
294+
-(id<MyFlexItem> (^)(CGFloat percent, CGFloat inc))width_percent
295+
{
296+
return ^id(CGFloat percent, CGFloat inc) {
297+
self.view.widthSize.equalTo(@(MyLayoutSize.fill)).multiply(percent).add(inc);
298+
return self;
299+
};
300+
}
301+
302+
-(id<MyFlexItem> (^)(CGFloat))min_width
303+
{
304+
return ^id(CGFloat val) {
305+
self.view.widthSize.min(val);
306+
return self;
307+
};
308+
}
309+
310+
-(id<MyFlexItem> (^)(CGFloat))max_width
311+
{
312+
return ^id(CGFloat val) {
313+
self.view.widthSize.max(val);
314+
return self;
315+
};
316+
}
317+
318+
-(id<MyFlexItem> (^)(CGFloat))height
319+
{
320+
return ^id(CGFloat val) {
321+
if (val > 0 && val < 1)
322+
self.view.heightSize.equalTo(@(MyLayoutSize.fill)).multiply(val);
323+
else
324+
self.view.heightSize.equalTo(@(val));
325+
return self;
326+
};
327+
}
328+
329+
-(id<MyFlexItem> (^)(CGFloat percent, CGFloat inc))height_percent
330+
{
331+
return ^id(CGFloat percent, CGFloat inc) {
332+
self.view.heightSize.equalTo(@(MyLayoutSize.fill)).multiply(percent).add(inc);
333+
return self;
334+
};
335+
}
336+
337+
-(id<MyFlexItem> (^)(CGFloat))min_height
338+
{
339+
return ^id(CGFloat val) {
340+
self.view.heightSize.min(val);
341+
return self;
342+
};
343+
}
344+
345+
-(id<MyFlexItem> (^)(CGFloat))max_height
346+
{
347+
return ^id(CGFloat val) {
348+
self.view.heightSize.max(val);
349+
return self;
350+
};
351+
}
352+
353+
-(id<MyFlexItem> (^)(CGFloat))margin_top
354+
{
355+
return ^id(CGFloat val) {
356+
self.view.myTop = val;
357+
return self;
358+
};
359+
}
360+
361+
-(id<MyFlexItem> (^)(CGFloat))margin_bottom
362+
{
363+
return ^id(CGFloat val) {
364+
self.view.myBottom = val;
365+
return self;
366+
};
367+
}
368+
369+
-(id<MyFlexItem> (^)(CGFloat))margin_left
370+
{
371+
return ^id(CGFloat val) {
372+
self.view.myLeft = val;
373+
return self;
374+
};
375+
}
376+
377+
-(id<MyFlexItem> (^)(CGFloat))margin_right
378+
{
379+
return ^id(CGFloat val) {
380+
self.view.myRight = val;
381+
return self;
382+
};
383+
}
384+
385+
-(id<MyFlexItem> (^)(CGFloat))margin
386+
{
387+
return ^id(CGFloat val) {
388+
self.view.myLeft = val;
389+
self.view.myRight = val;
390+
self.view.myTop = val;
391+
self.view.myBottom = val;
392+
return self;
393+
};
394+
}
395+
396+
-(id<MyFlexItem> (^)(MyVisibility))visibility
397+
{
398+
return ^id(MyVisibility val) {
399+
self.view.visibility = val;
400+
return self;
401+
};
402+
}
403+
404+
-(__kindof UIView* (^)(UIView*))addTo
405+
{
406+
return ^(UIView *val) {
407+
[val addSubview:self.view];
408+
return self.view;
409+
};
410+
}
411+
412+
-(id<MyFlexItem> (^)(UIView*))add
413+
{
414+
return ^(UIView *val) {
415+
[self.view addSubview:val];
416+
return self;
417+
};
418+
}
419+
420+
284421
-(id<MyFlexItem> (^)(NSInteger))order
285422
{
286423
return ^id(NSInteger val) {
@@ -321,12 +458,6 @@ -(instancetype)initWithView:(UIView*)view attrs:(id<MyFlexItemAttrs>)attrs
321458
};
322459
}
323460

324-
//其他请求跳转到myUI中去。
325-
-(id)forwardingTargetForSelector:(SEL)aSelector
326-
{
327-
return self.view.myUI;
328-
}
329-
330461
@end
331462

332463

MyLayout/Lib/MyLayout.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*/
3838

3939

40-
//Current version is 1.9.0beta, please open: https://github.com/youngsoft/MyLinearLayout/blob/master/CHANGELOG.md to show the changes.
40+
//Current version is 1.9.0, please open: https://github.com/youngsoft/MyLinearLayout/blob/master/CHANGELOG.md to show the changes.
4141

4242

4343
#ifndef MyLayout_MyLayout_h

0 commit comments

Comments
 (0)