From cd73266bd8bde5677bf20e241a3ada3a3e87f1d3 Mon Sep 17 00:00:00 2001 From: youngsoft Date: Sat, 30 Nov 2019 08:41:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8D=87=E7=BA=A7=EF=BC=8CBU?= =?UTF-8?q?G=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- MyLayout.xcodeproj/project.pbxproj | 14 -- MyLayout/Lib/MyBaseLayout.h | 10 +- MyLayout/Lib/MyFlexLayout.h | 80 +++++- MyLayout/Lib/MyFlexLayout.m | 145 ++++++++++- MyLayout/Lib/MyLayout.h | 2 +- MyLayout/Lib/MyLayoutUI.h | 117 --------- MyLayout/Lib/MyLayoutUI.m | 260 -------------------- MyLayout/Lib/MyLayoutUIInner.h | 19 -- MyLayoutDemo/AllTestExampleViewController.m | 24 +- MyLayoutDemo/FLLTest3ViewController.m | 2 + 11 files changed, 230 insertions(+), 445 deletions(-) delete mode 100644 MyLayout/Lib/MyLayoutUI.h delete mode 100644 MyLayout/Lib/MyLayoutUI.m delete mode 100644 MyLayout/Lib/MyLayoutUIInner.h diff --git a/CHANGELOG.md b/CHANGELOG.md index da5dbfe..9524878 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ **MyLayout**的所有版本的变更日志都将会在这里记录. --- -## [V1.9.0](https://github.com/youngsoft/MyLinearLayout/releases/tag/1.9.0)(2019/10/21) +## [V1.9.0](https://github.com/youngsoft/MyLinearLayout/releases/tag/1.9.0)(2019/11/30) ### Added diff --git a/MyLayout.xcodeproj/project.pbxproj b/MyLayout.xcodeproj/project.pbxproj index 9fd7100..aa59aa0 100644 --- a/MyLayout.xcodeproj/project.pbxproj +++ b/MyLayout.xcodeproj/project.pbxproj @@ -171,10 +171,6 @@ 20DF42422318F4EA0078CAA0 /* MyFlexLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 20DF42402318F4EA0078CAA0 /* MyFlexLayout.m */; }; 20F0DFFD2111749A00CFCE8C /* AllTest11ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F0DFFC2111749A00CFCE8C /* AllTest11ViewController.m */; }; 20F0E00021120A8D00CFCE8C /* FLLTest8ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F0DFFF21120A8D00CFCE8C /* FLLTest8ViewController.m */; }; - 20F4A803237EF0E000D464E7 /* MyLayoutUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 20F4A801237EF0E000D464E7 /* MyLayoutUI.h */; }; - 20F4A804237EF0E000D464E7 /* MyLayoutUI.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F4A802237EF0E000D464E7 /* MyLayoutUI.m */; }; - 20F4A805237EF46200D464E7 /* MyLayoutUI.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F4A802237EF0E000D464E7 /* MyLayoutUI.m */; }; - 20F4A807237FC40900D464E7 /* MyLayoutUIInner.h in Headers */ = {isa = PBXBuildFile; fileRef = 20F4A806237FC40900D464E7 /* MyLayoutUIInner.h */; }; 20F783561F60399700BE5B31 /* GLTest3ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F783551F60399700BE5B31 /* GLTest3ViewController.m */; }; 4411977B1F6AE78E00C22557 /* GridLayoutDemo5.json in Resources */ = {isa = PBXBuildFile; fileRef = 4411977A1F6AE78E00C22557 /* GridLayoutDemo5.json */; }; 444B71911F6A3E3F00331872 /* GLTest5ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 444B71901F6A3E3F00331872 /* GLTest5ViewController.m */; }; @@ -430,9 +426,6 @@ 20F0DFFC2111749A00CFCE8C /* AllTest11ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AllTest11ViewController.m; sourceTree = ""; }; 20F0DFFE21120A8D00CFCE8C /* FLLTest8ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FLLTest8ViewController.h; sourceTree = ""; }; 20F0DFFF21120A8D00CFCE8C /* FLLTest8ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FLLTest8ViewController.m; sourceTree = ""; }; - 20F4A801237EF0E000D464E7 /* MyLayoutUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyLayoutUI.h; sourceTree = ""; }; - 20F4A802237EF0E000D464E7 /* MyLayoutUI.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyLayoutUI.m; sourceTree = ""; }; - 20F4A806237FC40900D464E7 /* MyLayoutUIInner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLayoutUIInner.h; sourceTree = ""; }; 20F783541F60398C00BE5B31 /* GLTest3ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLTest3ViewController.h; sourceTree = ""; }; 20F783551F60399700BE5B31 /* GLTest3ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLTest3ViewController.m; sourceTree = ""; }; 4411977A1F6AE78E00C22557 /* GridLayoutDemo5.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = GridLayoutDemo5.json; sourceTree = ""; }; @@ -822,9 +815,6 @@ 182225B41E77E5930081AA4B /* MyFlowLayout.m */, 20DF423F2318F4EA0078CAA0 /* MyFlexLayout.h */, 20DF42402318F4EA0078CAA0 /* MyFlexLayout.m */, - 20F4A801237EF0E000D464E7 /* MyLayoutUI.h */, - 20F4A802237EF0E000D464E7 /* MyLayoutUI.m */, - 20F4A806237FC40900D464E7 /* MyLayoutUIInner.h */, 182225AC1E77E5930081AA4B /* MyLinearLayout.h */, 182225B21E77E5930081AA4B /* MyLinearLayout.m */, 182225AD1E77E5930081AA4B /* MyFloatLayout.h */, @@ -939,7 +929,6 @@ 18C15AF21EDF13F900AADEAC /* MyPathLayout.h in Headers */, 205643161F55A03000E8BDDE /* MyLayoutMath.h in Headers */, 18C15AF31EDF13FF00AADEAC /* MyFrameLayout.h in Headers */, - 20F4A803237EF0E000D464E7 /* MyLayoutUI.h in Headers */, 18C15AF41EDF140400AADEAC /* MyBaseLayout.h in Headers */, 18C15AF51EDF140D00AADEAC /* MyLayoutPos.h in Headers */, 18C15AF61EDF141000AADEAC /* MyLayoutSize.h in Headers */, @@ -953,7 +942,6 @@ 18C15AFA1EDF142300AADEAC /* MyLayoutDef.h in Headers */, 205E0C6020B907CC001A8B99 /* MyLayoutPosInner.h in Headers */, 205E0C6120B907D1001A8B99 /* MyLayoutSizeInner.h in Headers */, - 20F4A807237FC40900D464E7 /* MyLayoutUIInner.h in Headers */, 205E0C6220B907DB001A8B99 /* MyLayoutInner.h in Headers */, 205E0C6320B907EC001A8B99 /* MyLayoutDelegate.h in Headers */, ); @@ -1163,7 +1151,6 @@ 20DF42422318F4EA0078CAA0 /* MyFlexLayout.m in Sources */, 182DB6441EF7876200E2D65D /* MyGridLayout.m in Sources */, 18C15B001EDF144B00AADEAC /* MyPathLayout.m in Sources */, - 20F4A804237EF0E000D464E7 /* MyLayoutUI.m in Sources */, 18C15B011EDF144B00AADEAC /* MyFrameLayout.m in Sources */, 18C15B021EDF144B00AADEAC /* MyBaseLayout.m in Sources */, 18C15B031EDF144B00AADEAC /* MyLayoutPos.m in Sources */, @@ -1195,7 +1182,6 @@ 18D3C9731EDF082800D3DE43 /* AllTest2TableViewCell.m in Sources */, 18D3C95F1EDF07F800D3DE43 /* FOLTest6ViewController.m in Sources */, 182225D51E77E5930081AA4B /* MyLayoutSize.m in Sources */, - 20F4A805237EF46200D464E7 /* MyLayoutUI.m in Sources */, 6740E20120A52DC100AFBC5A /* AllTest10Cell.m in Sources */, 18D3C93A1EDF07C000D3DE43 /* FLLTest2ViewController.m in Sources */, 467E63CF228CDA660065D080 /* AllTest1TableViewCellForAutoLayout.m in Sources */, diff --git a/MyLayout/Lib/MyBaseLayout.h b/MyLayout/Lib/MyBaseLayout.h index 540d04b..f048446 100644 --- a/MyLayout/Lib/MyBaseLayout.h +++ b/MyLayout/Lib/MyBaseLayout.h @@ -336,12 +336,18 @@ */ /** - *视图的宽度布局尺寸,是widthSize.equalTo方法的简化版本。此属性只用于赋值不用于读取! + *视图的宽度布局尺寸,是widthSize.equalTo方法的简化版本。此属性只用于赋值不用于读取!除了设置常规的数字外您还可以设置一些特殊的值: + MyLayoutSize.wrap 表示宽度自适应 + MyLayoutSize.fill 表明宽度填充父视图剩余宽度 + MyLayoutSize.empty 表明清除宽度约束。 */ @property(nonatomic,assign) IBInspectable CGFloat myWidth; /** - *视图的高度布局尺寸,是heightSize.equalTo方法的简化版本。此属性只用于赋值不用于读取! + *视图的高度布局尺寸,是heightSize.equalTo方法的简化版本。此属性只用于赋值不用于读取!除了设置常规的数字外您还可以设置一些特殊的值: + MyLayoutSize.wrap 表示高度自适应 + MyLayoutSize.fill 表明高度填充父视图剩余高度 + MyLayoutSize.empty 表明清除高度约束。 */ @property(nonatomic,assign) IBInspectable CGFloat myHeight; diff --git a/MyLayout/Lib/MyFlexLayout.h b/MyLayout/Lib/MyFlexLayout.h index dcccf83..b508f82 100644 --- a/MyLayout/Lib/MyFlexLayout.h +++ b/MyLayout/Lib/MyFlexLayout.h @@ -7,7 +7,6 @@ // #import "MyFlowLayout.h" -#import "MyLayoutUI.h" /**定义flex的方向类型*/ typedef enum : int { @@ -89,9 +88,86 @@ extern const int MyFlex_Auto; -@protocol MyFlexItem +@protocol MyFlexItem @property(nonatomic, strong, readonly) id attrs; +@property(nonatomic, weak, readonly) __kindof UIView *view; + + +/** + 视图的宽度设置,如果宽度设置为大于0小于1则表明是相对于父视图宽度的比重值,如果是MyLayoutSize.wrap则表明宽度自适应,如果是MyLayoutSize.fill则表明宽度和父视图相等,如果是MyLayoutSize.empty则表明不设置宽度值。 其他的值就是一个固定宽度值。 + */ +-(id (^)(CGFloat))width; + + +/** + 视图的宽度设置,percent表明占用父视图宽度的百分比值,inc表明在百分比值的基础上的增量值。 + */ +-(id (^)(CGFloat percent, CGFloat inc))width_percent; + + +/** + 最小宽度限制设置 + */ +-(id (^)(CGFloat))min_width; + +/** + 最大宽度限制设置 + */ +-(id (^)(CGFloat))max_width; +/** + 视图的高度设置,如果高度设置为大于0小于1则表明是相对于父视图高度的比重值,如果是MyLayoutSize.wrap则表明高度自适应,如果是MyLayoutSize.fill则表明高度和父视图相等,如果是MyLayoutSize.empty则表明不设置高度值,其他的值就是一个固定高度值。 + */ +-(id (^)(CGFloat))height; + +/** + 视图的高度设置,percent表明占用父视图高度的百分比值,inc表明在百分比值的基础上的增量值。 + */ +-(id (^)(CGFloat percent, CGFloat inc))height_percent; + + +/** + 最小高度限制设置 + */ +-(id (^)(CGFloat))min_height; + +/** + 最大高度限制设置 + */ +-(id (^)(CGFloat))max_height; + +//视图的外间距设置。 +/** + 视图的顶部外间距设置 + */ +-(id (^)(CGFloat))margin_top; +/** + 视图的底部外间距设置 + */ +-(id (^)(CGFloat))margin_bottom; +/** + 视图的左边外间距设置 + */ +-(id (^)(CGFloat))margin_left; +/** + 视图的右边外间距设置 + */ +-(id (^)(CGFloat))margin_right; +/** + 视图的四周外间距设置 + */ +-(id (^)(CGFloat))margin; +/** + 视图的可视设置 + */ +-(id (^)(MyVisibility))visibility; + + +//添加到父视图中 +-(__kindof UIView* (^)(UIView*))addTo; + +//添加子视图 +-(id (^)(UIView*))add; /** 条目在弹盒中的排列顺序,值越大越往后排。 diff --git a/MyLayout/Lib/MyFlexLayout.m b/MyLayout/Lib/MyFlexLayout.m index 40c801c..095848f 100644 --- a/MyLayout/Lib/MyFlexLayout.m +++ b/MyLayout/Lib/MyFlexLayout.m @@ -7,7 +7,6 @@ // #import "MyFlexLayout.h" -#import "MyLayoutUIInner.h" #import "MyLayoutInner.h" #import @@ -281,6 +280,144 @@ -(instancetype)initWithView:(UIView*)view attrs:(id)attrs return _attrs; } +-(id (^)(CGFloat))width +{ + return ^id(CGFloat val) { + if (val > 0 && val < 1) + self.view.widthSize.equalTo(@(MyLayoutSize.fill)).multiply(val); + else + self.view.widthSize.equalTo(@(val)); + return self; + }; +} + +-(id (^)(CGFloat percent, CGFloat inc))width_percent +{ + return ^id(CGFloat percent, CGFloat inc) { + self.view.widthSize.equalTo(@(MyLayoutSize.fill)).multiply(percent).add(inc); + return self; + }; +} + +-(id (^)(CGFloat))min_width +{ + return ^id(CGFloat val) { + self.view.widthSize.min(val); + return self; + }; +} + +-(id (^)(CGFloat))max_width +{ + return ^id(CGFloat val) { + self.view.widthSize.max(val); + return self; + }; +} + +-(id (^)(CGFloat))height +{ + return ^id(CGFloat val) { + if (val > 0 && val < 1) + self.view.heightSize.equalTo(@(MyLayoutSize.fill)).multiply(val); + else + self.view.heightSize.equalTo(@(val)); + return self; + }; +} + +-(id (^)(CGFloat percent, CGFloat inc))height_percent +{ + return ^id(CGFloat percent, CGFloat inc) { + self.view.heightSize.equalTo(@(MyLayoutSize.fill)).multiply(percent).add(inc); + return self; + }; +} + +-(id (^)(CGFloat))min_height +{ + return ^id(CGFloat val) { + self.view.heightSize.min(val); + return self; + }; +} + +-(id (^)(CGFloat))max_height +{ + return ^id(CGFloat val) { + self.view.heightSize.max(val); + return self; + }; +} + +-(id (^)(CGFloat))margin_top +{ + return ^id(CGFloat val) { + self.view.myTop = val; + return self; + }; +} + +-(id (^)(CGFloat))margin_bottom +{ + return ^id(CGFloat val) { + self.view.myBottom = val; + return self; + }; +} + +-(id (^)(CGFloat))margin_left +{ + return ^id(CGFloat val) { + self.view.myLeft = val; + return self; + }; +} + +-(id (^)(CGFloat))margin_right +{ + return ^id(CGFloat val) { + self.view.myRight = val; + return self; + }; +} + +-(id (^)(CGFloat))margin +{ + return ^id(CGFloat val) { + self.view.myLeft = val; + self.view.myRight = val; + self.view.myTop = val; + self.view.myBottom = val; + return self; + }; +} + +-(id (^)(MyVisibility))visibility +{ + return ^id(MyVisibility val) { + self.view.visibility = val; + return self; + }; +} + +-(__kindof UIView* (^)(UIView*))addTo +{ + return ^(UIView *val) { + [val addSubview:self.view]; + return self.view; + }; +} + +-(id (^)(UIView*))add +{ + return ^(UIView *val) { + [self.view addSubview:val]; + return self; + }; +} + + -(id (^)(NSInteger))order { return ^id(NSInteger val) { @@ -321,12 +458,6 @@ -(instancetype)initWithView:(UIView*)view attrs:(id)attrs }; } -//其他请求跳转到myUI中去。 --(id)forwardingTargetForSelector:(SEL)aSelector -{ - return self.view.myUI; -} - @end diff --git a/MyLayout/Lib/MyLayout.h b/MyLayout/Lib/MyLayout.h index 4da0f7c..166d13d 100644 --- a/MyLayout/Lib/MyLayout.h +++ b/MyLayout/Lib/MyLayout.h @@ -37,7 +37,7 @@ */ -//Current version is 1.9.0beta, please open: https://github.com/youngsoft/MyLinearLayout/blob/master/CHANGELOG.md to show the changes. +//Current version is 1.9.0, please open: https://github.com/youngsoft/MyLinearLayout/blob/master/CHANGELOG.md to show the changes. #ifndef MyLayout_MyLayout_h diff --git a/MyLayout/Lib/MyLayoutUI.h b/MyLayout/Lib/MyLayoutUI.h deleted file mode 100644 index 1becd05..0000000 --- a/MyLayout/Lib/MyLayoutUI.h +++ /dev/null @@ -1,117 +0,0 @@ -// -// MyFlexItem.h -// MyLayout -// -// Created by oubaiquan on 2019/11/15. -// Copyright © 2019 YoungSoft. All rights reserved. -// - -#import -#import "MyLayoutDef.h" - - -@protocol MyUIViewUI -@optional - -//您可以用链式语法进行属性设置,也可以直接通过属性赋值进行设置和获取。 -@property(nonatomic, weak, readonly) __kindof UIView *view; - - -/** - 视图的宽度设置,如果宽度设置为大于0小于1则表明是相对于父视图宽度的比重值,如果是MyLayoutSize.wrap则表明宽度自适应,如果是MyLayoutSize.fill则表明宽度和父视图相等,如果是MyLayoutSize.empty则表明不设置宽度值。 其他的值就是一个固定宽度值。 - */ --(id (^)(CGFloat))width; - - -/** - 视图的宽度设置,percent表明占用父视图宽度的百分比值,inc表明在百分比值的基础上的增量值。 - */ --(id (^)(CGFloat percent, CGFloat inc))width_percent; - - -/** - 最小宽度限制设置 - */ --(id (^)(CGFloat))min_width; - -/** - 最大宽度限制设置 - */ --(id (^)(CGFloat))max_width; -/** - 视图的高度设置,如果高度设置为大于0小于1则表明是相对于父视图高度的比重值,如果是MyLayoutSize.wrap则表明高度自适应,如果是MyLayoutSize.fill则表明高度和父视图相等,如果是MyLayoutSize.empty则表明不设置高度值,其他的值就是一个固定高度值。 - */ --(id (^)(CGFloat))height; - -/** - 视图的高度设置,percent表明占用父视图高度的百分比值,inc表明在百分比值的基础上的增量值。 - */ --(id (^)(CGFloat percent, CGFloat inc))height_percent; - - -/** - 最小高度限制设置 - */ --(id (^)(CGFloat))min_height; - -/** - 最大高度限制设置 - */ --(id (^)(CGFloat))max_height; - -//视图的外间距设置。 -/** - 视图的顶部外间距设置 - */ --(id (^)(CGFloat))margin_top; -/** - 视图的底部外间距设置 - */ --(id (^)(CGFloat))margin_bottom; -/** - 视图的左边外间距设置 - */ --(id (^)(CGFloat))margin_left; -/** - 视图的右边外间距设置 - */ --(id (^)(CGFloat))margin_right; -/** - 视图的四周外间距设置 - */ --(id (^)(CGFloat))margin; -/** - 视图的可视设置 - */ --(id (^)(MyVisibility))visibility; - -//视图特有的属性。 --(id (^)(CGAffineTransform))transform; --(id (^)(BOOL))clipsToBounds; --(id (^)(UIColor*))backgroundColor; --(id (^)(CGFloat))alpha; --(id (^)(NSInteger))tag; --(id (^)(BOOL))userInteractionEnabled; --(id (^)( UIColor *color,CGFloat width))border; --(id (^)(CGFloat))cornerRadius; --(id (^)(UIColor* color, CGSize offset, CGFloat radius))shadow; - -//添加到父视图中 --(__kindof UIView* (^)(UIView*))addTo; - -//添加子视图 --(id (^)(UIView*))add; - -@end - - -@protocol MyUIViewUICategory - -@property(nonatomic, strong, readonly) id myUI; - -@end - - -@interface UIView(MyLayoutUI) -@end - diff --git a/MyLayout/Lib/MyLayoutUI.m b/MyLayout/Lib/MyLayoutUI.m deleted file mode 100644 index 6359827..0000000 --- a/MyLayout/Lib/MyLayoutUI.m +++ /dev/null @@ -1,260 +0,0 @@ -// -// MyFlexItem.m -// MyLayout -// -// Created by oubaiquan on 2019/11/15. -// Copyright © 2019 YoungSoft. All rights reserved. -// - -#import "MyBaseLayout.h" -#import "MyLayoutInner.h" -#import "MyLayoutUIInner.h" -#import - -const char * const ASSOCIATEDOBJECT_KEY_MYLAYOUT_MYUI = "ASSOCIATEDOBJECT_KEY_MYLAYOUT_MYUI"; - - -#pragma mark -- MyUIViewUI - -@implementation MyUIViewUI - --(instancetype)initWithView:(UIView*)view -{ - self = [self init]; - if (self != nil) - { - _view = view; - } - return self; -} - --(id (^)(CGFloat))width -{ - return ^id(CGFloat val) { - if (val > 0 && val < 1) - self.view.widthSize.equalTo(@(MyLayoutSize.fill)).multiply(val); - else - self.view.widthSize.equalTo(@(val)); - return self; - }; -} - --(id (^)(CGFloat percent, CGFloat inc))width_percent -{ - return ^id(CGFloat percent, CGFloat inc) { - self.view.widthSize.equalTo(@(MyLayoutSize.fill)).multiply(percent).add(inc); - return self; - }; -} - --(id (^)(CGFloat))min_width -{ - return ^id(CGFloat val) { - self.view.widthSize.min(val); - return self; - }; -} - --(id (^)(CGFloat))max_width -{ - return ^id(CGFloat val) { - self.view.widthSize.max(val); - return self; - }; -} - --(id (^)(CGFloat))height -{ - return ^id(CGFloat val) { - if (val > 0 && val < 1) - self.view.heightSize.equalTo(@(MyLayoutSize.fill)).multiply(val); - else - self.view.heightSize.equalTo(@(val)); - return self; - }; -} - --(id (^)(CGFloat percent, CGFloat inc))height_percent -{ - return ^id(CGFloat percent, CGFloat inc) { - self.view.heightSize.equalTo(@(MyLayoutSize.fill)).multiply(percent).add(inc); - return self; - }; -} - --(id (^)(CGFloat))min_height -{ - return ^id(CGFloat val) { - self.view.heightSize.min(val); - return self; - }; -} - --(id (^)(CGFloat))max_height -{ - return ^id(CGFloat val) { - self.view.heightSize.max(val); - return self; - }; -} - --(id (^)(CGFloat))margin_top -{ - return ^id(CGFloat val) { - self.view.myTop = val; - return self; - }; -} - --(id (^)(CGFloat))margin_bottom -{ - return ^id(CGFloat val) { - self.view.myBottom = val; - return self; - }; -} - --(id (^)(CGFloat))margin_left -{ - return ^id(CGFloat val) { - self.view.myLeft = val; - return self; - }; -} - --(id (^)(CGFloat))margin_right -{ - return ^id(CGFloat val) { - self.view.myRight = val; - return self; - }; -} - --(id (^)(CGFloat))margin -{ - return ^id(CGFloat val) { - self.view.myLeft = val; - self.view.myRight = val; - self.view.myTop = val; - self.view.myBottom = val; - return self; - }; -} - --(id (^)(MyVisibility))visibility -{ - return ^id(MyVisibility val) { - self.view.visibility = val; - return self; - }; -} - --(id (^)(CGAffineTransform))transform -{ - return ^id(CGAffineTransform val) { - self.view.transform = val; - return self; - }; -} - --(id (^)(BOOL))clipsToBounds -{ - return ^id(BOOL val) { - self.view.clipsToBounds = val; - return self; - }; -} - --(id (^)(UIColor*))backgroundColor -{ - return ^id(UIColor *val) { - self.view.backgroundColor = val; - return self; - }; -} - --(id (^)(CGFloat))alpha -{ - return ^id(CGFloat val) { - self.view.alpha = val; - return self; - }; -} - --(id (^)(NSInteger))tag -{ - return ^id(NSInteger val) { - self.view.tag = val; - return self; - }; -} - --(id (^)(BOOL))userInteractionEnabled -{ - return ^id(BOOL val) { - self.view.userInteractionEnabled = val; - return self; - }; -} - --(id (^)(UIColor *color, CGFloat width))border -{ - return ^id(UIColor *color, CGFloat width) { - self.view.layer.borderColor = color.CGColor; - self.view.layer.borderWidth = width; - return self; - }; -} - --(id (^)(CGFloat))cornerRadius -{ - return ^id(CGFloat val) { - self.view.layer.cornerRadius = val; - return self; - }; -} - --(id (^)(UIColor* color, CGSize offset, CGFloat radius))shadow -{ - return ^id(UIColor *color, CGSize offset, CGFloat radius) { - self.view.layer.shadowColor = color.CGColor; - self.view.layer.shadowOffset = offset; - self.view.layer.shadowRadius = radius; - return self; - }; -} - --(__kindof UIView* (^)(UIView*))addTo -{ - return ^(UIView *val) { - [val addSubview:self.view]; - return self.view; - }; -} - --(id (^)(UIView*))add -{ - return ^(UIView *val) { - [self.view addSubview:val]; - return self; - }; -} - - -@end - - -@implementation UIView(MyLayoutUI) - --(id)myUI -{ - id obj = (id)objc_getAssociatedObject(self, ASSOCIATEDOBJECT_KEY_MYLAYOUT_MYUI); - if (obj == nil) - { - obj = [[MyUIViewUI alloc] initWithView:self]; - objc_setAssociatedObject(self, ASSOCIATEDOBJECT_KEY_MYLAYOUT_MYUI, obj, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - } - return obj; -} - -@end diff --git a/MyLayout/Lib/MyLayoutUIInner.h b/MyLayout/Lib/MyLayoutUIInner.h deleted file mode 100644 index 2ee05eb..0000000 --- a/MyLayout/Lib/MyLayoutUIInner.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// MyFlexItem.h -// MyLayout -// -// Created by oubaiquan on 2019/11/15. -// Copyright © 2019 YoungSoft. All rights reserved. -// - -#import "MyLayoutUI.h" - -#pragma mark -- MyUIViewUI - -@interface MyUIViewUI : NSObject - -@property(nonatomic, weak, readonly) __kindof UIView *view; - --(instancetype)initWithView:(UIView*)view; - -@end diff --git a/MyLayoutDemo/AllTestExampleViewController.m b/MyLayoutDemo/AllTestExampleViewController.m index fbd8b30..ee4ced6 100644 --- a/MyLayoutDemo/AllTestExampleViewController.m +++ b/MyLayoutDemo/AllTestExampleViewController.m @@ -232,27 +232,8 @@ -(void)example4 -(void)example5 { - //一个row 下两个宽度均分高度为填充的子视图。 - - MyFlexLayout *rootLayout = MyFlexLayout.new.myFlex - .margin(0) - .addTo(self.view); - - UIView *v1 = MyFlexLayout.new.myFlex - .flex_grow(1) - .margin_top(30) - .backgroundColor(UIColor.redColor) - .addTo(rootLayout); - - UIView *v2 = MyFlexLayout.new.myFlex - .flex_grow(1) - .margin_top(30) - .backgroundColor(UIColor.greenColor) - .addTo(rootLayout); - - - - /*MyRelativeLayout *rootLayout = [MyRelativeLayout new]; + + MyRelativeLayout *rootLayout = [MyRelativeLayout new]; rootLayout.myHeight = MyLayoutSize.wrap; rootLayout.myHorzMargin = 0; rootLayout.padding = UIEdgeInsetsMake(12, 12, 12, 12); @@ -290,7 +271,6 @@ -(void)example5 [rootLayout addSubview:barView]; [self.view addSubview:rootLayout]; - */ } @end diff --git a/MyLayoutDemo/FLLTest3ViewController.m b/MyLayoutDemo/FLLTest3ViewController.m index 2de8feb..e5720c9 100644 --- a/MyLayoutDemo/FLLTest3ViewController.m +++ b/MyLayoutDemo/FLLTest3ViewController.m @@ -33,6 +33,8 @@ -(void)loadView 子视图的扩展属性useFrame表示某个子视图不受布局视图的布局控制,而是用最原始的frame属性设置来实现自定义的位置和尺寸的设定。 子视图的扩展属性noLayout表示某个子视图会参与布局,但是并不会正真的调整布局后的frame值。 + 在新版本1.9.0中将这些能力进行了统一的封装,通过一个拖放类来实现这些功能。 + */ MyLinearLayout *rootLayout = [MyLinearLayout linearLayoutWithOrientation:MyOrientation_Vert];